@moses13

Как сделать инерцию при вращении камеры в юнити?

Пытаюсь реализовать вращение камеры с инерцией вокруг объекта.
Вот часть кода:
if(Input.GetMouseButton(0))
{
cameraObj.transform.RotateAround(myGameObj.transform.position,
cameraObj.transform.up,
-Input.GetAxis("Mouse X")*speed);

cameraObj.transform.RotateAround(myGameObj.transform.position,
cameraObj.transform.right,
-Input.GetAxis("Mouse Y")*speed);
}
Менять принцип вращения не нужно, только добавить инерцию после отпускания кнопки
  • Вопрос задан
  • 33 просмотра
Пригласить эксперта
Ответы на вопрос 1
@DrRen7
using UnityEngine;
 
public class Rotate : MonoBehaviour
{
    float _currentSpeed;
    float _targetSpeed;
    [SerializeField] float _speedRotate;
    const float c_acceleration = 20f;
    const float c_di_acceleration = 10f;
    float _acceleration;

    private void Update()
    {
        _targetSpeed = Input.GetAxis("Mouse Y")*_speedRotate;
        _acceleration = _targetSpeed != 0 ? c_acceleration : c_di_acceleration;
        _currentSpeed = Mathf.MoveTowards(_currentSpeed, _targetSpeed, _acceleration * Time.deltaTime);
    }

}

с константами надо поиграть что бы не было задержки при вращении
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы