// TODO: Fix this private float GetBrakeDistance(Vector2 diff, VelocityValues velocityValues) { var currentVelocity = velocityValues.localVelocity.magnitude; var deceleration = GetDecelerationVelocity(-diff, DampeningThrustMultiplier); return(CalculateBrakeDistance(currentVelocity, 0, deceleration)); }
private Vector2 Target(VelocityValues velocityValues, float deltaTime) { if (MoveTo == null) { return(Vector2.zero); } // Calculate the distance between the current and target position from the perspective of the ship var diff = GetLocalDifference(MoveTo); if (diff.magnitude < 1f) { return(Vector2.zero); } return(diff.magnitude > GetBrakeDistance(diff, velocityValues) ? thrustVectors.GetClampedForce(diff, TargetThrustMultiplier) * deltaTime : Vector2.zero); }
private Vector2 Dampen(VelocityValues velocityValues, float deltaTime) { void ProcessAxis(ref float forceAxis, float velocityAxis) { if (Mathf.Abs(forceAxis) > Mathf.Abs(velocityAxis)) { forceAxis = velocityAxis; } } // Get force for this frame var frameTargetForce = thrustVectors.GetForce(-velocityValues.localVelocityForce, DampeningThrustMultiplier) * deltaTime; var frameVelocityForce = -velocityValues.localVelocityForce / deltaTime; ProcessAxis(ref frameTargetForce.x, frameVelocityForce.x); ProcessAxis(ref frameTargetForce.y, frameVelocityForce.y); return(frameTargetForce); }