помогите с скриптом

sibainuu

Member
30 Май 2025
1
0
1
У меня есть скрипт для ретро анимации (как в 2007 году), сама анимация работает корректно, но игровой персонаж летает по всей карте из-за того что каждую часть его тела тпхает на другую координату. Я пытался исправить этот "баг" заменив части тела на суставы, те leftArm -> leftShoulder и так же все остальное, но тогда анимация переставала работать, а перс переставал летать. Вот мой скрипт. Я буду очень благодарен если мне укажут на мою ошибку и подскажут что исправить. (первоначальная версия скрипта)

если что писал на Lua

local Players = game:GetService("Players")

local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")

-- Получаем части тела R6
local torso = character:WaitForChild("Torso")
local leftArm = character:WaitForChild("Left Arm")
local rightArm = character:WaitForChild("Right Arm")
local leftLeg = character:WaitForChild("Left Leg")
local rightLeg = character:WaitForChild("Right Leg")

local RunService = game:GetService("RunService")

local animationSpeed = 2 -- скорость анимации
local animationAmplitude = math.rad(15) -- амплитуда поворота в радианах

local time = 0

RunService.RenderStepped:Connect(function(deltaTime)
if humanoid.MoveDirection.Magnitude > 0 then
time = time + deltaTime * animationSpeed

-- Простая анимация ходьбы: руки и ноги качаются в противоположных фазах
leftArm.CFrame = torso.CFrame * CFrame.new(-1.5, 0.5, 0) * CFrame.Angles(math.sin(time) * animationAmplitude, 0, 0)
rightArm.CFrame = torso.CFrame * CFrame.new(1.5, 0.5, 0) * CFrame.Angles(-math.sin(time) * animationAmplitude, 0, 0)
leftLeg.CFrame = torso.CFrame * CFrame.new(-0.5, -1.5, 0) * CFrame.Angles(-math.sin(time) * animationAmplitude, 0, 0)
rightLeg.CFrame = torso.CFrame * CFrame.new(0.5, -1.5, 0) * CFrame.Angles(math.sin(time) * animationAmplitude, 0, 0)
else
-- Если персонаж стоит, возвращаем части тела в исходное положение
leftArm.CFrame = torso.CFrame * CFrame.new(-1.5, 0.5, 0)
rightArm.CFrame = torso.CFrame * CFrame.new(1.5, 0.5, 0)
leftLeg.CFrame = torso.CFrame * CFrame.new(-0.5, -1.5, 0)
rightLeg.CFrame = torso.CFrame * CFrame.new(0.5, -1.5, 0)
time = 0
end
end)