Я вращаю GameObject на основе касания двумя пальцами. У меня отлично работает вращение, но я получаю странную проблему, когда иногда я касаюсь двумя пальцами, чтобы начать вращение, но как только я касаюсь экрана, объект мгновенно поворачивается. Это кажется случайным относительно того, когда это делает, и вращение также кажется случайным. Я думаю, что касание вызывает поворот на основе последней позиции, но мой код должен сбрасывать начальную позицию.
Сенсорный код находится в сценарии, прикрепленном к объекту для поворота, поэтому он находится в одном файле.
Вот код.
В методе обновления я обнаруживаю, что он поддерживается касанием, и пытаюсь вызвать "HandleTouch ()"
void Update()
{
if (Input.touchSupported)
HandleTouch();
else
HandleMouse();
}
Метод HandleTouch
private void HandleTouch()
{
if (Input.touchCount < 2) return;
switch (Input.touchCount)
{
case 2:
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Began)
{
lastRotPosition = touch.position;
}
else if (touch.phase == TouchPhase.Moved)
{
Vector3 offset = touch.position - lastRotPosition;
lastRotPosition = touch.position;
RotateCamera(offset.x * RotateSpeedTouch, offset.y * RotateSpeedTouch);
}
else if (touch.phase == TouchPhase.Ended)
{
lastRotPosition = new Vector2();
}
break;
}
}
И это метод, который вращает GameObject
void RotateCamera(float x, float y)
{
float rotX = x * rotateSpeed * Mathf.Deg2Rad;
float rotY = y * rotateSpeed * Mathf.Deg2Rad;
transform.Rotate(Vector3.up, rotX);
transform.Rotate(Vector3.right, -rotY);
}
Спасибо за любую помощь или понимание, которое вы можете предложить.