示例#1
0
            private void TurnToward(float desiredAngle)
            {
                // TODO: verify that the sign of these numbers is correct for both XY and XZ
                float currentAngle     = (ZMult * transform.localEulerAngles.y) + (YMult * transform.localEulerAngles.z);
                float angleDiff        = SteeringUtilities.angleDiff(currentAngle, desiredAngle);
                float rotationPerFrame = turnRate * Time.fixedDeltaTime;

                if (angleDiff > rotationPerFrame)
                {
                    float newAngle = currentAngle + rotationPerFrame;
                    transform.localEulerAngles = new Vector3(0, ZMult * newAngle, YMult * newAngle);
                }
                else if (angleDiff < -rotationPerFrame)
                {
                    float newAngle = currentAngle - rotationPerFrame;
                    transform.localEulerAngles = new Vector3(0, ZMult * newAngle, YMult * newAngle);
                }
                else
                {
                    transform.localEulerAngles = new Vector3(0, ZMult * desiredAngle, YMult * desiredAngle);
                }
            }