So in my game I have a check to see if the player is above, or looking in the direction of a boost pad (a wedge part), if they are, they are then sent flying in the direction the pad is facing. This works fine as long as the player has a high framerate, however I've been consistnantly seeing players with framerates of >30/20 who are overshooting the arc considerably. The way the Boost reduction works is tied to framerate, so this will give some players a huge advantage/disadvantage.
I have the following code:
local BoostStart local BoostEnd local Speed local Boosted = false local function Boost(Pad) if Pad.Name == "Boost" and Boosted == false then Boosted = true BoostStart = Pad.CFrame*CFrame.new(0,-Pad.Size.Y/2,-Pad.Size.Z/2) BoostEnd = Pad.CFrame*CFrame.new(0,Pad.Size.Y/2,Pad.Size.Z/2) Speed = 100 if Pad:findFirstChild("Speed") then Speed = Pad.Speed.Value end end end
which is called by:
local ray = Ray.new(humanoid.Torso.Position,Vector3.new(0,-5,0)) local hit,pos = game.Workspace:FindPartOnRay(ray,LocalPlayer.Character) if hit then Boost(hit) end local ray = Ray.new(humanoid.Torso.Position,(humanoid.Torso.CFrame.lookVector)*3) local ignore = {LocalPlayer.Character; workspace.CurrentCamera} local hit,pos = game.Workspace:FindPartOnRayWithIgnoreList(ray,ignore) if hit then Boost(hit) end moveFunc(LocalPlayer, adjustedMoveValue, true) local Herp = humanoid.Torso.Velocity:lerp(Vector3.new(humanoid.MoveDirection.X*(30),humanoid.Torso.Velocity.Y,humanoid.MoveDirection.Z*(30)),.1) if Boosted == true then BoostEnd=BoostEnd*CFrame.new(0,-.1,0) humanoid.Torso.Velocity = (BoostEnd.p-BoostStart.p).unit*Speed if BoostEnd.p.Y < BoostStart.p.Y then Boosted = false end else humanoid.Torso.Velocity = Herp end
This is within the ControlScript's master script, updating every frame, is there anything I can change here to create a consistant "arc" regardless of framerate, or to make it as close as possible? Many thanks!