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

Мне нужен скрипт который при спавне персонажа он превращается в шар в Roblox studio!!??

Artem2y97 Профи (526), открыт 16 часов назад
Этот шар нужно управлять a w s d а также на мобильных устройств управление джойстиком чтобы шар покатится и самое главное чтобы этот шар катался а не просто передвигался и чтобы этот шар катился по наклону
3 ответа
Egor Mexelion Мастер (1091) 16 часов назад
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local player = game.Players.LocalPlayer

local function createBall(character)
for _, part in pairs(character:GetChildren()) do
if part:IsA("BasePart") then part:Destroy() end
end
local ball = Instance.new ("Part")
ball.Shape = Enum.PartType.Ball
ball.Size = Vector3.new (4, 4, 4)
ball.Position = character.PrimaryPart.Position
ball.Anchored = false
ball.CanCollide = true
ball.Parent = workspace
local bodyVelocity = Instance.new ("BodyVelocity")
bodyVelocity.MaxForce = Vector3.new (10000, 10000, 10000)
bodyVelocity.Velocity = Vector3.new (0, 0, 0)
bodyVelocity.Parent = ball
character.PrimaryPart = ball
local movementDirection = Vector3.new (0, 0, 0)
local function onInput(input, gameProcessedEvent)
if gameProcessedEvent then return end
if input.KeyCode == Enum.KeyCode.W then movementDirection = Vector3.new (0, 0, -1) end
if input.KeyCode == Enum.KeyCode.S then movementDirection = Vector3.new (0, 0, 1) end
if input.KeyCode == Enum.KeyCode.A then movementDirection = Vector3.new (-1, 0, 0) end
if input.KeyCode == Enum.KeyCode.D then movementDirection = Vector3.new (1, 0, 0) end
end
UserInputService.InputBegan:Connect(onInput)
RunService.Heartbeat:Connect(function() bodyVelocity.Velocity = movementDirection * 50 end)
end

player.CharacterAdded:Connect(createBall)
Artem2y97Профи (526) 16 часов назад
Что не так с скриптом
Artem2y97Профи (526) 16 часов назад
Ошибки
Алексей Щербаков Ученик (196) 14 часов назад
Вот пример скрипта на Lua, который превращает персонажа в шар при его создании:

local player = game.Players.LocalPlayer

local function onCharacterAdded(character)
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
end

player.CharacterAdded:Connect(onCharacterAdded)
Artem2y97Профи (526) 13 часов назад
Где физика????? Почему шар не катится
FeniksD Профи (944) 10 часов назад
Добавьте скрипт в StarterPlayerScripts:
В StarterPlayer найдите StarterPlayerScripts.
Щелкните правой кнопкой мыши и выберите Insert Object → LocalScript.
Назовите скрипт, например, BallController.
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()

-- Функция для превращения персонажа в шар
local function transformToBall(char)
-- Удаляем стандартные части персонажа
for _, part in ipairs(char:GetChildren()) do
if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then
part:Destroy()
end
end

-- Создаем шар
local ball = Instance.new("Part")
ball.Name = "Ball"
ball.Shape = Enum.PartType.Ball
ball.Size = Vector3.new(2, 2, 2)
ball.Color = Color3.fromRGB(255, 0, 0)
ball.Material = Enum.Material.SmoothPlastic
ball.Anchored = false
ball.CanCollide = true
ball.Position = char.HumanoidRootPart.Position
ball.Parent = char

-- Добавляем физику
local bodyForce = Instance.new("BodyForce")
bodyForce.Name = "BodyForce"
bodyForce.Parent = ball

-- Добавляем BodyTorque для вращения
local bodyTorque = Instance.new("BodyTorque")
bodyTorque.Name = "BodyTorque"
bodyTorque.P = 1000
bodyTorque.MaxTorque = Vector3.new(400000, 400000, 400000)
bodyTorque.Parent = ball

-- Удаляем Humanoid и HumanoidRootPart
if char:FindFirstChild("Humanoid") then
char.Humanoid:Destroy()
end
if char:FindFirstChild("HumanoidRootPart") then
char.HumanoidRootPart:Destroy()
end

return ball
end

local ball = transformToBall(character)

local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")

local speed = 500 -- Настройка силы движения

-- Таблица для хранения состояний клавиш
local input = {
W = false,
A = false,
S = false,
D = false
}

-- Обработчики ввода клавиатуры
UserInputService.InputBegan:Connect(function(inputObj, gameProcessed)
if gameProcessed then return end
if inputObj.KeyCode == Enum.KeyCode.W then
input.W = true
elseif inputObj.KeyCode == Enum.KeyCode.A then
input.A = true
elseif inputObj.KeyCode == Enum.KeyCode.S then
input.S = true
elseif inputObj.KeyCode == Enum.KeyCode.D then
input.D = true
end
end)

UserInputService.InputEnded:Connect(function(inputObj, gameProcessed)
if gameProcessed then return end
if inputObj.KeyCode == Enum.KeyCode.W then
input.W = false
elseif inputObj.KeyCode == Enum.KeyCode.A then
input.A = false
elseif inputObj.KeyCode == Enum.KeyCode.S then
input.S = false
elseif inputObj.KeyCode == Enum.KeyCode.D then
input.D = false
end
end)

-- Функция для применения вращения к шару
local function applyTorque()
local torque = Vector3.new(0, 0, 0)
if input.W then
torque = torque + Vector3.new(500, 0, 0)
end
if input.S then
torque = torque + Vector3.new(-500, 0, 0)
end
if input.A then
torque = torque + Vector3.new(0, 0, 500)
end
if input.D then
torque = torque + Vector3.new(0, 0, -500)
end
ball.BodyTorque.Torque = torque
end

-- Цикл для постоянного применения вращения
RunService.RenderStepped:Connect(function()
applyTorque()
end)
Похожие вопросы