Exemplo n.º 1
0
    private void FixedUpdate()
    {
        Vector3 forces = Vector3.zero;

        if (Drifting && aft != null && aft.Burning)
        {
            ShipPhysicsStats.ClampShipVelocity(rb, physicsStats, CruiseState.Off);
            ShipPhysicsStats.HandleDrifting(rb, physicsStats, false);
            forces = CalcAfterburnerForces();
        }

        else if (Drifting)
        {
            ShipPhysicsStats.HandleDrifting(rb, physicsStats, true);
        }

        else if (!Drifting)
        {
            ShipPhysicsStats.HandleDrifting(rb, physicsStats, false);
            forces = CalcStrafeForces() + CalcThrottleForces() + CalcAfterburnerForces();
        }

        if (forces != Vector3.zero)
        {
            rb.AddForce(forces);
        }
    }
Exemplo n.º 2
0
    public static void ClampShipVelocity(Rigidbody rb, ShipPhysicsStats stats, CruiseState state)
    {
        float currentMaxSpeed = 0;

        switch (state)
        {
        case CruiseState.Off:
            currentMaxSpeed = stats.maxAfterburnSpeed;
            break;

        case CruiseState.Charging:
            currentMaxSpeed = stats.maxNormalSpeed;
            break;

        case CruiseState.On:
            currentMaxSpeed = stats.maxCruiseSpeed;
            break;

        case CruiseState.Disrupted:
            currentMaxSpeed = stats.maxAfterburnSpeed;
            break;

        default:
            break;
        }

        rb.velocity = Vector3.ClampMagnitude(rb.velocity, currentMaxSpeed);
    }
Exemplo n.º 3
0
    private void HandleDriftingChange(bool drifting)
    {
        if (cruiseEngine != null && drifting)
        {
            cruiseEngine.StopAnyCruise();
        }

        ShipPhysicsStats.HandleDrifting(rb, engine.physicsStats, drifting);
    }
Exemplo n.º 4
0
    public static void HandleDrifting(Rigidbody rb, ShipPhysicsStats stats, bool isDrifting)
    {
        if (isDrifting)
        {
            rb.mass = stats.driftMass;
            rb.drag = stats.driftDrag;
        }

        else
        {
            rb.mass = stats.mass;
            rb.drag = stats.drag;
        }
    }