So, I’m making a spider and for some reason the leg keeps going to its default position.
local function Reach(CurrentJoint: BasePart, EndJoint:BasePart, Arm:BasePart)
local Distance = (EndJoint.Position - CurrentJoint.Position).Magnitude
local ArmLength = Arm.Size.Z
if CurrentJoint.Name == "1" then
Joints[1].Position = script.Parent["Back Right Leg"].WorldCFrame.Position
end
CurrentJoint.CFrame = CFrame.lookAt(CurrentJoint.Position, EndJoint.Position)
CurrentJoint.CFrame *= CFrame.new(-Vector3.zAxis * (Distance - ArmLength))
Arm.CFrame = CFrame.lookAt(CurrentJoint.Position, EndJoint.Position)
Arm.CFrame *= CFrame.new(-Vector3.zAxis * (ArmLength/2))
Joints[1].Position = script.Parent["Back Right Leg"].WorldCFrame.Position
Torso.Position = Torso.Position
end
function RayCast(Origin: Vector3, Direction: Vector3, Ignore: {Instance})
local Raycast = workspace:Raycast(Origin, Direction, RaycastParams.new())
if Raycast then
if table.find(Ignore, Raycast.Instance) then
Raycast = RayCast(Raycast.Position, Direction, Ignore)
end
end
return Raycast
end
RunService.Heartbeat:Connect(function(deltaTime: number)
if (Target.Position - Torso["Back Right Leg"].Relax.WorldCFrame.Position).Magnitude > 10 or (Target.Position - Model["Back Right Leg"].Joints["3"].Position).Magnitude > 5 and moving == false then
local Cast = RayCast(Torso["Back Right Leg"].Relax.WorldCFrame.Position,Vector3.new(0,-15,0),Model:GetDescendants())
if Cast.Instance then
local Tween = TweenService:Create(Target,TweenInfo.new(.25),{Position = Cast.Position + Vector3.new(0,5,0)})
Tween:Play()
else
local Tween = TweenService:Create(Target,TweenInfo.new(.25),{Position = Torso["Back Right Leg"].Relax.WorldCFrame.Position + Vector3.new(0,-5,0)})
Tween:Play()
end
wait(.15)
if Cast.Instance then
TweenService:Create(Target,TweenInfo.new(.25),{Position = Cast.Position}):Play()
else
TweenService:Create(Target,TweenInfo.new(.25),{Torso["Back Right Leg"].Relax.WorldCFrame.Position - Vector3.new(0,-15,0)}):Play()
end
wait(.25)
end
if (Target.Position - LastPos).Magnitude < .1 and (Joints[1].Position - LastPos2).Magnitude < .1 then return end
LastPos = Target.Position
Torso.Position = Torso.Position
local EndJoint = Joints[#Joints]
local RootJoint = Joints[1]
EndJoint.Position = Target.Position + Vector3.new(0,10,0)
for i = #Joints - 1, 1, -1 do
Reach(Joints[i], Joints[i + 1], Arms[i])
end
EndJoint.Position = Target.Position
for i = #Joints - 1, 1, -1 do
Reach(Joints[i], Joints[i + 1], Arms[i])
end
RootJoint.Position = script.Parent["Back Right Leg"].WorldCFrame.Position
Torso.Position = Torso.Position
for i = 2, #Joints do
Reach(Joints[i], Joints[i - 1], Arms[i - 1])
end
end)
whats happening
it is breaking left, right and center so I have no idea whats going on.