Объявление
public static Vector3 RotateTowards(Vector3 current, Vector3 target, float maxRadiansDelta, float maxMagnitudeDelta);Параметры
| current | Управляемый вектор. |
| target | Вектор. |
| maxRadiansDelta | Максимальный угол в радианах, разрешенный для этого поворота. |
| maxMagnitudeDelta | Максимально допустимое изменение величины вектора для этого поворота. |
Возвращает
Vector3 Местоположение, которое генерирует RotateTowards.
Описание
Поворачивает вектор current по направлению к target.
Эта функция аналогична MoveTowards, за исключением того, что вектор обрабатывается как направление, а не позиция. Вектор current будет повернут в направлении target на угол maxRadiansDelta, хотя он приземлится точно в цель, а не промахнется. Если величины current и target различаются, то во время поворота величина результата будет линейно интерполирована. Если для maxRadiansDelta используется отрицательное значение, вектор будет поворачиваться от target/ до тех пор, пока не будет указывать точно в противоположном направлении. , затем останавливается.
Смотрите так же: Quaternion.RotateTowards.
using UnityEngine;
// Чтобы использовать этот скрипт, присоедините его к GameObject, который вы хотите повернуть к другому игровому объекту.
// После присоединения перейдите к инспектору и перетащите GameObject, направление которого вы хотите повернуть, в целевое поле.
// Переместите цель в окне сцены, чтобы увидеть, как GameObject непрерывно вращается к ней.
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);
}
}

