Доброго времени суток! Нашёл баг в решении. Хочу поделится правильным решением. Ошибка в методе private void ShakeRotateCameraInternal(...). Должен выглядеть следующим образом: private void ShakeRotateCameraInternal(Vector2 direction, float angleDeg, float degVelocity) { _degVelocity = degVelocity; direction = direction.normalized; direction *= Mathf.Tan(angleDeg * Mathf.Deg2Rad); Vector3 resDirection = ((Vector3)direction + Vector3.forward).normalized; _targetRotation = Quaternion.FromToRotation(Vector3.forward, resDirection); } Прошу прощение за кривой формат кода. По сути вместо transform.forward нужно использовать Vector3.forward, потому что именно таким будет направление взгляда локальное.
Доброго времени суток! Нашёл баг в решении. Хочу поделится правильным решением. Ошибка в методе private void ShakeRotateCameraInternal(...).
Должен выглядеть следующим образом:
private void ShakeRotateCameraInternal(Vector2 direction, float angleDeg, float degVelocity)
{
_degVelocity = degVelocity;
direction = direction.normalized;
direction *= Mathf.Tan(angleDeg * Mathf.Deg2Rad);
Vector3 resDirection = ((Vector3)direction + Vector3.forward).normalized;
_targetRotation = Quaternion.FromToRotation(Vector3.forward, resDirection);
}
Прошу прощение за кривой формат кода.
По сути вместо transform.forward нужно использовать Vector3.forward, потому что именно таким будет направление взгляда локальное.