current | 要处理的向量。 |
target | 目标向量。 |
maxRadiansDelta | 此旋转允许的最大角度(以弧度为单位)。 |
maxMagnitudeDelta | 此旋转允许的最大矢量幅度变化。 |
Vector3 RotateTowards 生成的位置。
将向量 current
朝 target
旋转。
该函数类似于 MoveTowards,但向量被视为方向而不是位置。
current
向量将朝 target
方向旋转 maxRadiansDelta
的角度,
但其将准确地落在目标上而不会超过目标。
如果 current
和 target
的大小不同,则在旋转期间对结果大小进行线性插值。
如果为 maxRadiansDelta
使用负值,则向量将朝远离 target
的方向旋转,
直到它指向完全相反的方向,然后停止。
另请参阅:Quaternion.RotateTowards。
using UnityEngine;
// To use this script, attach it to the GameObject that you would like to rotate towards another game object. // After attaching it, go to the inspector and drag the GameObject you would like to rotate towards into the target field. // Move the target around in the scene view to see the GameObject continuously rotate towards it. public class Example : MonoBehaviour { // The target marker. public Transform target;
// Angular speed in radians per sec. public float speed = 1.0f;
void Update() { // Determine which direction to rotate towards Vector3 targetDirection = target.position - transform.position;
// The step size is equal to speed times frame time. float singleStep = speed * Time.deltaTime;
// Rotate the forward vector towards the target direction by one step Vector3 newDirection = Vector3.RotateTowards(transform.forward, targetDirection, singleStep, 0.0f);
// Draw a ray pointing at our target in Debug.DrawRay(transform.position, newDirection, Color.red);
// Calculate a rotation a step closer to the target and applies rotation to this object transform.rotation = Quaternion.LookRotation(newDirection); } }