Объявление
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);
}
}