Есть ли возможность сделать Quaternion.Lerp более плавным и равномерным? Чтобы скорость у краёв значений была хоть примерна равна серёдке?
Допустим, мне нужно вращать объект от текущего угла, до заданного. Но поворот должен быть плавным. А он в начале и в конце еле-еле плетётся.
[SerializeField] private float _rotationSpeed;
[SerializeField] private Quaternion _targetRotation;
private Quaternion _targetRotation;
private Quaternion _maxRotation;
private Quaternion _minRotation;
private void Start()
{
_targetRotation = _maxRotation;
StartCoroutine(LoopRotation());
}
private void Rotate()
{
transform.rotation = Quaternion.LerpUnclamped(transform.rotation, _targetRotation, _rotationSpeed * Time.deltaTime);
}
private IEnumerator LoopRotation()
{
while (true)
{
Rotate();
//просто изменение угла, к которому нужно стремиться
if (transform.rotation.z >= _maxRotation.z - 0.02f)
_targetRotation = _minRotation;
else if (transform.rotation.z <= _minRotation.z + 0.02f)
_targetRotation = _maxRotation;
yield return null;
}
}