Я использую следующий код для измерения смахиваний на сенсорных устройствах. Тем не менее, вычисления, которые я делаю для moveHorizontal и moveVertical, всегда положительны. Разница в осязании всегда положительна. Игрок перемещается только в верхнем правом углу, независимо от того, проводите ли вы по экрану или просто долго нажимаете на экран. Что я делаю неправильно?
if (Input.touchCount > 0)
{
foreach (Touch touch in Input.touches)
{
if (touch.phase == TouchPhase.Began)
{
firstPos = new Vector2(touch.position.x / (float)Screen.width, touch.position.y / (float)Screen.width);
lastPos = new Vector2(touch.position.x / (float)Screen.width, touch.position.y / (float)Screen.width);
}
else if (touch.phase == TouchPhase.Moved)
{
lastPos = new Vector2(touch.position.x / (float)Screen.width, touch.position.y / (float)Screen.width);
}
else if (touch.phase == TouchPhase.Ended)
{
lastPos = new Vector2(touch.position.x / (float)Screen.width, touch.position.y / (float)Screen.width);
}
moveHorizontal = lastPos.x - firstPos.x;
moveVertical = lastPos.y - firstPos.y;
}
}
Я использую следующий код для перемещения объекта игрока.
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
rigidbody.AddForce(movement * speed);