I am working on a Plane System that is based off of Sleitnick’s Biplane. Currently I am working on the Thrust portion of the plane. After testing, it appears my plane doesn’t move until close to -43000 on the Z axis of the VectorForce. My issue is, once it crosses that mark, it accelerates super, super fast. Here are some code snippets that might help with figuring out the problem:
Throttle: A value between 0 and 1.
PlaneWeight: Total Mass of Plane Model, is currently around 400.
MaxEngineForce: Set to 300… not sure what to set it too with this issue.
*Damping*: A module created by Sleitnick
local damping = Damping.new() damping.P = NUMBER damping.D = NUMBER damping.Position = Vector3 damping.Goal = Vector3 damping:Update() [Returns Vector3 position] velocity += P * ( (target - current) + D * -velocity ); current += velocity * dt; Credit: http://www.gamedev.net/topic/561981-smooth-value-damping/
Flyer:Update (called on Heartbeat)
function Flyer:Update(plrMouse) local t = realThrottle if (t > 0) then t = math.max(0.05, (realThrottle - 0.5) * 2) end self.Mover.Force = V3(0,0, (t * self.PlaneWeight * -MAX_ENGINE_FORCE)) end
Flyer:UpdateControlls (called on RenderStepped)
local lastControlUpdate = tick() function Flyer:UpdateControls(plrMouse) local now = tick() local dt = (now - lastControlUpdate) lastControlUpdate = now throttleDamp.Goal = V3(self.Throttle, 0, 0) local controlInputs = controlDamp:Update() local throttleInput = throttleDamp:Update() realThrottle = throttleInput.X if (realThrottle < 0.001) then realThrottle = 0 end end
ClientPlane:ReadInput (called on Heartbeat)
-- Update throttle: throttle = ((w ~= s) and (w and 1 or -1) or 0) if (throttle ~= 0) then local t = flyer.Throttle + (throttle * dt * 0.2) t = (t < 0.5 and 0.5 or t > 1 and 1 or t) flyer.Throttle = t planeGui:UpdateThrottle(t) end
Note: My plane is scaled down to roughly the size of a character with the realistic workspace gravity settings. I am applying this VectorForce to a mass-less part within the plane.
You can test in person here: Plane Game - Roblox
Note: (W/S for Throttle, A/D for Rudder) - Drag and Lift aren’t implemented yet.
UI shows the Z Value of the Force and the Throttle.
If any more information is needed, feel free to let me know!
Thanks in advance!