Esempio n. 1
0
    private void LimitSpeed()
    {
        Vector3 vel           = _rigid.velocity;
        float   relativeRight = Vector3.Dot(vel, transform.right);

        relativeRight = Mathf.Sign(relativeRight) * Mathf.Min(Mathf.Abs(relativeRight), _maxSpeed.x);
        float relativeUp = Vector3.Dot(vel, transform.up);

        relativeUp = Mathf.Sign(relativeUp) * Mathf.Min(Mathf.Abs(relativeUp), _maxSpeed.y);
        float relativeForward = Vector3.Dot(vel, transform.forward);

        relativeForward = Mathf.Sign(relativeForward) * Mathf.Min(Mathf.Abs(relativeForward), _maxSpeed.z);

        vel = new Vector3(relativeRight, relativeUp, relativeForward);
        DebugText.ShowVector("relative velocity", vel);
        vel = transform.TransformVector(vel);

        _rigid.velocity = vel;
    }