Объявление
public static float MoveTowardsAngle(float current, float target, float maxDelta);Описание
То же, что и MoveTowards, но обеспечивает правильную интерполяцию значений, когда они охватывают 360 градусов.
Переменные current
и target
предполагаются в градусах.
По соображениям оптимизации отрицательные значения maxDelta
не поддерживаются и могут вызывать колебания. Чтобы отодвинуть current
от целевого угла, вместо этого добавьте 180 к этому углу.
using UnityEngine;
public class Example : MonoBehaviour
{
float target = 270.0f;
float speed = 45.0f;
void Update()
{
float angle = Mathf.MoveTowardsAngle(transform.eulerAngles.y, target, speed * Time.deltaTime);
transform.eulerAngles = new Vector3(0, angle, 0);
}
}