Объявление
public static float SmoothDampAngle(float current, float target, ref float currentVelocity, float smoothTime, float maxSpeed = Mathf.Infinity, float deltaTime = Time.deltaTime);Параметры
current | Текущее положение. |
target | Позиция, которую мы пытаемся достичь. |
currentVelocity | Текущая скорость, это значение модифицируется функцией каждый раз, когда вы ее вызываете. |
smoothTime | Примерное время, необходимое для достижения цели. Меньшее значение быстрее достигнет цели. |
maxSpeed | Опционально позволяет зажать максимальную скорость. |
deltaTime | Время с момента последнего вызова этой функции. По умолчанию Time.deltaTime. |
Описание
Постепенно изменяет угол, указанный в градусах, в сторону желаемого целевого угла с течением времени.
Значение сглаживается некоторой функцией, похожей на пружинный демпфер. Функцию можно использовать для сглаживания любых значений, позиций, цветов, скаляров. Чаще всего используется для сглаживания следящей камеры.
using UnityEngine;
public class Example : MonoBehaviour
{
//A simple smooth follow camera,
// that follows the targets forward direction
Transform target;
float smooth = 0.3f;
float distance = 5.0f;
float yVelocity = 0.0f;
void Update()
{
// Damp angle from current y-angle towards target y-angle
float yAngle = Mathf.SmoothDampAngle(transform.eulerAngles.y, target.eulerAngles.y, ref yVelocity, smooth);
// Position at the target
Vector3 position = target.position;
// Then offset by distance behind the new angle
position += Quaternion.Euler(0, yAngle, 0) * new Vector3(0, 0, -distance);
// Apply the position
transform.position = position;
// Look at the target
transform.LookAt(target);
}
}