コード例 #1
0
        // 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));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }