I’m wondering if there’s a better method to increase a LookVector by 1 until it reaches said value.
The reason why I’m asking is, my method keeps breaking my method to turn a seat.
I’ve tried multiple other methods, but they all work the same.
(I apologize in advance for the semi messed up format)
The turning method;
if Seat.Steer == 1 then
Seat.BodyGyro.CFrame = Seat.BodyGyro.CFrame * CFrame.fromEulerAnglesXYZ(0,- TurnSpeed,0)
end
if Seat.Steer == -1 then
Seat.BodyGyro.CFrame = Seat.BodyGyro.CFrame * CFrame.fromEulerAnglesXYZ(0,TurnSpeed,0)
end
My increase method;
if AheadValues.FullAhead.Value == true then
repeat wait(Acceleration)
if BodyVelocity.Velocity.X <= FullSpeed then
BodyVelocity.Velocity = BodyVelocity.Velocity + Seat.CFrame.lookVector * 1
elseif BodyVelocity.Velocity.X >= FullSpeed then
BodyVelocity.Velocity = BodyVelocity.Velocity - Seat.CFrame.lookVector * 1
end
until BodyVelocity.Velocity.X == FullSpeed or AheadValues.FullAhead.Value == false
end
Quite literally a stupid help request, but this has been annoying me for days now.
Use vector lerping for increasing a vector3 value to a goal value.
local finalGoalVelocity = Vector3.new(0,0,0) --change this to the goal final velocity perhaps on key down
local RunService = game:GetService("RunService")
RunService.Heartbeat:Connect(function(deltaTime)
local lerpAlphaValue = math.min(deltaTime,1)
BodyVelocity.Velocity = BodyVelocity.Velocity:Lerp(finalGoalVelocity,lerpAlphaValue)
end)
This rate of change will depend on the lerp alpha value, if set to a constant like 0.5. The velocity will increase asymptotically for example from 0-1 on every heartbeat frame it will go like:
0,0.5,0.75,0.875,…, close to 1
If you want it to increase linearly instead try doing something like this.
I got the idea from @ThanksRoBama which allows the humanoid to accelerate up to a point in a given direction.