Используя Unity, я пытаюсь переместить вращение турелей с помощью камеры от первого лица с помощью касания, я берусь от края экрана к центру в направлении, которое я хочу выбрать, как на картах Google, сенсорный захват перемещает мой камера там плавно.
Проблема в том, что камера очень дергается, а не в плавном положении.
In Global
private float smoothTouchFactor = 5;
Это код, который я использую в Update()
Quaternion rotation;
if (Input.touchCount > 0)
{
if (Input.GetTouch(0).phase == TouchPhase.Moved)
{
Touch touch = Input.GetTouch(0);
x += touch.deltaPosition.x * xSpeed * 0.02f;
y -= touch.deltaPosition.y * ySpeed * 0.02f;
rotation = Quaternion.Euler(y, x, 0f);
turretHeadToMove.rotation = Quaternion.Slerp(turretHeadToMove.rotation, rotation, Time.deltaTime * smoothTouchFactor);
}
}
rotation = Quaternion.Euler(y, x, 0f);
turretHeadToMove.rotation = Quaternion.Slerp(turretHeadToMove.rotation, rotation, Time.deltaTime * smoothTouchFactor);
Если я не добавляю последние 2 строки после if (touchCount), то камера возвращается в исходное положение после того, как я убираю палец с экрана.
Вот код мышиной оси X / Y, который работает и плавно перемещает револьверную головку без рывков.
private float xSpeed = 40.0f;
private float ySpeed = 40.0f;
in Update()
x += Input.GetAxis("Mouse X") * xSpeed * 0.02f;
y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;
Quaternion rotation = Quaternion.Euler(y, x, 0f);
turretHeadToMove.rotation = rotation;