示例#1
0
    private void limitAngleAndVelocity()
    {
        carVelocity = GetComponent <Rigidbody>().velocity.magnitude;
        if (transform.rotation.eulerAngles.x > 180)
        {
            transform.rotation = Quaternion.Euler(
                Mathf.Clamp(transform.rotation.eulerAngles.x, 360 - maxTiltAngle, 360),
                transform.rotation.eulerAngles.y,
                transform.rotation.eulerAngles.z
                );
        }
        else if (transform.rotation.eulerAngles.x < 180)
        {
            transform.rotation = Quaternion.Euler(
                Mathf.Clamp(transform.rotation.eulerAngles.x, 0, maxTiltAngle),
                transform.rotation.eulerAngles.y,
                transform.rotation.eulerAngles.z
                );
        }

        if (transform.rotation.eulerAngles.z > 180)
        {
            transform.rotation = Quaternion.Euler(
                transform.rotation.eulerAngles.x,
                transform.rotation.eulerAngles.y,
                Mathf.Clamp(transform.rotation.eulerAngles.z, 360 - maxTiltAngle, 360)
                );
        }
        else if (transform.rotation.eulerAngles.z < 180)
        {
            transform.rotation = Quaternion.Euler(
                transform.rotation.eulerAngles.x,
                transform.rotation.eulerAngles.y,
                Mathf.Clamp(transform.rotation.eulerAngles.z, 0, maxTiltAngle)
                );
        }

        if (rb.velocity.magnitude > status.getSpeed())
        {
            //Debug.Log("slow down to v = " + status.getSpeed());
            float slowDownRatio = rb.velocity.magnitude / (status.getSpeed());
            rb.velocity /= slowDownRatio;
        }
    }