Ejemplo n.º 1
0
    private void ForwardMovement()
    {
        float additionalMovement = isOnIce ? iceDecelerationMultiplier : 1f;

        SetMaxVelocity();
        SetTrainState();

        if (trainMovement != TrainMovement.Reversing)
        {
            rb.velocity = Vector3.Lerp(minVelocity * transform.forward, maxVelocity * transform.forward, (currentAccelerationTime / maxAccelerationTime));
        }
        else
        {
            rb.velocity = Vector3.Lerp(Vector3.zero, reverseMaxVelocity * transform.forward * -1, (reverseAccelerationTime / maxReverseAccelerationTime));
        }

        trainManager.SetWheelsRotationSpeed((currentAccelerationTime < 0 ? 0 : currentAccelerationTime) / maxAccelerationTime * 100 * maxVelocity / maxOverheatHeatVelocity);
        snowRide.SetPercentageEffectSpeed((currentAccelerationTime < 0 ? 0 : currentAccelerationTime) / maxAccelerationTime * 100 * maxVelocity / maxOverheatHeatVelocity);
        trainSoundController?.ChangeSoundPitchBasedOnVelocity((currentAccelerationTime < 0 ? 0 : currentAccelerationTime) / maxAccelerationTime * 100 * maxVelocity / maxOverheatHeatVelocity);
        snowRide.SetIsOnIce(isOnIce);
    }