Работа с Euler Angles
Такой вопрос. Ограничиваю rotation объекта в игре, по оси y - все получилось, а по оси x - нет. Мне нужно ограничить от -40 до 40, но euler angles не принимает отрицательных значений. Код для ограничения по y -
if (_carTransform.eulerAngles.y < 160f)
{
_carTransform.eulerAngles = new Vector3(transform.eulerAngles.x, 160f, 0f);
}
else if (_carTransform.eulerAngles.y > 200f)
{
_carTransform.eulerAngles = new Vector3(transform.eulerAngles.x, 200f, 0f);
}
else
{
_carTransform.Rotate(_mouseDistance.y * _lookRateSpeed * Time.deltaTime, _mouseDistance.x * _lookRateSpeed * Time.deltaTime, 0f, Space.Self);
}
Может подскажет кто альтернативу или возможное решение с euler? Застопорился - ужас
Ответы (1 шт):
Автор решения: Yaroslav
→ Ссылка
[SerializeField] private Vector2 _LimitX = new Vector2(-60, 60);
private Transform _transform;
private void Awake () {
_transform = transform;
}
private void Update () {
Vector3 Angle = _transform.eulerAngles;
while (Angle.x > 180f)
Angle.x -= 360f;
while (Angle.x < -180f)
Angle.x += 360f;
Angle.x = Mathf.Clamp(Angle.x, _LimitX.x, _LimitX.y);
_transform.eulerAngles = Angle;
}