So, I'm making a custom running animation for the character. When the character runs, the script loops through a bunch of Vector3s. The problem is that the animation sometimes starts making the character's arms shake and that it isn't very smooth when restarting the loop. Could someone make my animation smoother?
Running Event (Assume everything is defined, database is a ModuleScript):
humanoid.Running:connect(function(speed)
if speed > 0 then
running = true
while running do
for frame = 1, #database.Frames.Running do
for i = 0,1,0.1 do
for joint, start in pairs(database.Frames.Running[frame]) do
wait()
local lerp = (frame == #database.Frames.Running and Vector3.new(0,0,0) or start):Lerp(database.Frames.Running[frame+1] and database.Frames.Running[frame+1][joint] or Vector3.new(0,0,0),i)
character.Torso[joint].C0 = database.Humanoid[joint].C0*CFrame.new(lerp.X,lerp.Y,lerp.Z)
end
end
end
end
else
running = false
for i, joint in pairs(character.Torso:GetChildren()) do
if joint:IsA("Motor6D") then
character.Torso[joint.Name].C0 = database.Humanoid[joint.Name].C0
end
end
end
end)
database ModuleScript:
database = {}
database.Frames = {}
database.Humanoid = {}
--database.Humanoid
--Motor6D
database.Humanoid["Left Shoulder"] ={
C0 = CFrame.new(-1, 0.5, 0)*CFrame.Angles(-0,math.rad(-90),0),
C1 = CFrame.new(0.5, 0.5, 0)*CFrame.Angles(-0,math.rad(-90),0)
}
database.Humanoid["Right Shoulder"] ={
C0 = CFrame.new(1, 0.5, 0)*CFrame.Angles(0,math.rad(90),0),
C1 = CFrame.new(-0.5, 0.5, 0)*CFrame.Angles(0,math.rad(90),0)
}
database.Humanoid["Neck"] = {
C0 = CFrame.new(0, 1, 0)*CFrame.Angles(math.rad(-90),0,math.rad(180)),
C1 = CFrame.new(0, -0.5, 0)*CFrame.Angles(math.rad(-90),0,math.rad(180))
}
database.Humanoid["Left Hip"] = {
C0 = CFrame.new(-1, -1, 0)*CFrame.Angles(0,math.rad(-90),0),
C1 = CFrame.new(-0.5, 1, 0)*CFrame.Angles(0,math.rad(-90),0)
}
database.Humanoid["Right Hip"] = {
C0 = CFrame.new(1, -1, 0)*CFrame.Angles(0,math.rad(90),0),
C1 = CFrame.new(0.5, 1, 0)*CFrame.Angles(0,math.rad(90),0)
}
--database.Frames
--Running
database.Frames.Running = {}
database.Frames.Running = {
{
["Right Shoulder"] = Vector3.new(0.1,-0.1,0),
["Left Shoulder"] = Vector3.new(0.1,-0.1,0)
};
{
["Right Shoulder"] = Vector3.new(0,0,0),
["Left Shoulder"] = Vector3.new(0,0,0)
};
{
["Right Shoulder"] = Vector3.new(-0.1,-0.1,0),
["Left Shoulder"] = Vector3.new(-0.1,-0.1,0)
}
}
for animation, frames in pairs(database.Frames) do
table.insert(frames,{})
for joint, _ in pairs(frames[1]) do
frames[#frames][joint] = Vector3.new(0,0,0)
end
setmetatable(frames,{})
getmetatable(frames).__index = {Joints = {}}
for joint, _ in pairs(frames[1]) do
table.insert(frames.Joints,joint)
end
end
return database

3 comments
Do you have an active Place where I could see this in action? I don't understand what you mean by the arms shaking.
http://www.roblox.com/FPS-Testing-place?id=58724430
Hello?