Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Мне нужен скрипт в Roblox studio

Artem2y97 Профи (535), открыт 6 часов назад
Мне нужен скрипт который при спавне персонажа он превращается в шар и если нажать на w то шар покатится вперёд, если нажать на s шар покатится назад и так далее Также можно управлять шаром телефоном таким же принципом но вместо w, s, a, d нужно управлять джойстиком (по умолчанию в Roblox для телефонов)
2 ответа
бабуин гибонович Оракул (51763) 6 часов назад
 local player = game.Players.LocalPlayer 

local function onCharacterAdded(character)
-- Ожидаем загрузки PrimaryPart
local primaryPart = character:WaitForChild("HumanoidRootPart")

-- Создаем сферу и заменяем текущий персонаж
local sphere = Instance.new("Part")
sphere.Shape = Enum.PartType.Ball
sphere.Size = Vector3.new(5, 5, 5)
sphere.Anchored = false
sphere.CanCollide = true
sphere.Position = primaryPart.Position
sphere.Parent = workspace

-- Перемещаем персонажа в сферу и отключаем коллизии персонажа
character:MoveTo(sphere.Position)

for _, part in ipairs(character:GetChildren()) do
if part:IsA("BasePart") then
part.CanCollide = false
part.Transparency = 1 -- Делаем части персонажа невидимыми
elseif part:IsA("Accessory") then
part.Handle.CanCollide = false
part.Handle.Transparency = 1
end
end

-- Привязываем персонажа к сфере
local weld = Instance.new("WeldConstraint")
weld.Part0 = sphere
weld.Part1 = primaryPart
weld.Parent = sphere

-- Управление
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local speed = 50

local function onInputBegan(input, isProcessed)
if isProcessed then return end

local direction = Vector3.new()
if input.KeyCode == Enum.KeyCode.W then
direction = Vector3.new(0, 0, -1)
elseif input.KeyCode == Enum.KeyCode.S then
direction = Vector3.new(0, 0, 1)
elseif input.KeyCode == Enum.KeyCode.A then
direction = Vector3.new(-1, 0, 0)
elseif input.KeyCode == Enum.KeyCode.D then
direction = Vector3.new(1, 0, 0)
end

local force = Instance.new("BodyVelocity")
force.Velocity = direction * speed
force.MaxForce = Vector3.new(4000, 0, 4000)
force.Parent = sphere

wait(0.1)
force:Destroy()
end

UserInputService.InputBegan:Connect(onInputBegan)

-- Управление джойстиком
local function onSteer(actionName, inputState, input)
if inputState == Enum.UserInputState.Change then
local direction = Vector3.new(input.Position.x, 0, -input.Position.y)
local force = Instance.new("BodyVelocity")
force.Velocity = direction * speed
force.MaxForce = Vector3.new(4000, 0, 4000)
force.Parent = sphere

wait(0.1)
force:Destroy()
end
end

game:GetService("ContextActionService"):BindAction("Steer", onSteer, true, Enum.PlayerActions.CharacterForward, Enum.PlayerActions.CharacterBackward, Enum.PlayerActions.CharacterLeft, Enum.PlayerActions.CharacterRight)
end

player.CharacterAdded:Connect(onCharacterAdded)

-- Если персонаж уже существует, вызываем функцию сразу
if player.Character then
onCharacterAdded(player.Character)
end
Artem2y97Профи (535) 6 часов назад
Куда вставлять этот скрипт? В шар?
Artem2y97Профи (535) 6 часов назад
Не работает, не превращается из персонажа в шар
бабуин гибонович Оракул (51763) Artem2y97, я сменил ответ. вот его концовка
Artem2y97Профи (535) 4 часа назад
Шар не катится
бабуин гибоновичОракул (51763) 31 минуту назад
 local player = game.Players.LocalPlayer 

local function onCharacterAdded(character)
-- Ожидаем загрузки PrimaryPart
local primaryPart = character:WaitForChild("HumanoidRootPart")

-- Создаем сферу и заменяем текущий персонаж
local sphere = Instance.new("Part")
sphere.Shape = Enum.PartType.Ball
sphere.Size = Vector3.new(5, 5, 5)
sphere.Anchored = false
sphere.CanCollide = true
sphere.Position = primaryPart.Position
sphere.Parent = workspace

бабуин гибоновичОракул (51763) 31 минуту назад
   -- Перемещаем персонажа в сферу и отключаем коллизии персонажа  
character:MoveTo(sphere.Position)

for _, part in ipairs(character:GetChildren()) do
if part:IsA("BasePart") then
part.CanCollide = false
part.Transparency = 1 -- Делаем части персонажа невидимыми
elseif part:IsA("Accessory") then
part.Handle.CanCollide = false
part.Handle.Transparency = 1
end
end

бабуин гибоновичОракул (51763) 30 минут назад
  -- Привязываем персонажа к сфере   
local weld = Instance.new("WeldConstraint")
weld.Part0 = sphere
weld.Part1 = primaryPart
weld.Parent = sphere

-- Добавляем BodyGyro для стабилизации шара
local bodyGyro = Instance.new("BodyGyro")
bodyGyro.MaxTorque = Vector3.new(4000, 4000, 4000)
bodyGyro.P = 3000
bodyGyro.CFrame = sphere.CFrame
bodyGyro.Parent = sphere

-- Добавляем BodyAngularVelocity для вращения шара
local bodyAngularVelocity = Instance.new("BodyAngularVelocity")
bodyAngularVelocity.MaxTorque = Vector3.new(4000, 4000, 4000)
bodyAngularVelocity.P = 3000
bodyAngularVelocity.Parent = sphere

бабуин гибоновичОракул (51763) 30 минут назад
  -- Управление    
local UserInputService = game:GetService("UserInputService")
local speed = 50

local function onInputBegan(input, isProcessed)
if isProcessed then return end

local direction = Vector3.new()
if input.KeyCode == Enum.KeyCode.W then
direction = Vector3.new(0, 0, -1)
elseif input.KeyCode == Enum.KeyCode.S then
direction = Vector3.new(0, 0, 1)
elseif input.KeyCode == Enum.KeyCode.A then
direction = Vector3.new(-1, 0, 0)
elseif input.KeyCode == Enum.KeyCode.D then
direction = Vector3.new(1, 0, 0)
end

bodyAngularVelocity.AngularVelocity = direction * speed
end

бабуин гибоновичОракул (51763) 30 минут назад
   local function onInputEnded(input, isProcessed)     
if isProcessed then return end

if input.KeyCode == Enum.KeyCode.W or input.KeyCode == Enum.KeyCode.S or input.KeyCode == Enum.KeyCode.A or input.KeyCode == Enum.KeyCode.D then
bodyAngularVelocity.AngularVelocity = Vector3.new(0, 0, 0)
end
end

UserInputService.InputBegan:Connect(onInputBegan)
UserInputService.InputEnded:Connect(onInputEnded)

-- Управление джойстиком
бабуин гибоновичОракул (51763) 29 минут назад
    local function onSteer(actionName, inputState, input)      
if inputState == Enum.UserInputState.Change then
local direction = Vector3.new(input.Position.x, 0, -input.Position.y)
bodyAngularVelocity.AngularVelocity = direction * speed
elseif inputState == Enum.UserInputState.End then
bodyAngularVelocity.AngularVelocity = Vector3.new(0, 0, 0)
end
end

бабуин гибоновичОракул (51763) 29 минут назад
    game:GetService("ContextActionService"):BindAction("Steer", onSteer, true, Enum.PlayerActions.CharacterForward, Enum.PlayerActions.CharacterBackward, Enum.PlayerActions.CharacterLeft, Enum.PlayerActions.CharacterRight)       
end

player.CharacterAdded:Connect(onCharacterAdded)

-- Если персонаж уже существует, вызываем функцию сразу
if player.Character then
onCharacterAdded(player.Character)
end





Похожие вопросы