Version: 2020.3

Vector3.RotateTowards

切换到手册
public static Vector3 RotateTowards (Vector3 current, Vector3 target, float maxRadiansDelta, float maxMagnitudeDelta);

参数

current 要处理的向量。
target 目标向量。
maxRadiansDelta 此旋转允许的最大角度(以弧度为单位)。
maxMagnitudeDelta 此旋转允许的最大矢量幅度变化。

返回

Vector3 RotateTowards 生成的位置。

描述

将向量 currenttarget 旋转。

该函数类似于 MoveTowards,但向量被视为方向而不是位置。 current 向量将朝 target 方向旋转 maxRadiansDelta 的角度, 但其将准确地落在目标上而不会超过目标。 如果 currenttarget 的大小不同,则在旋转期间对结果大小进行线性插值。 如果为 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); } }