Эй, я разрабатываю игру android с единством в 3D, и главное, что вы - квадрат, по которому вы должны двигаться по оси X. Я хочу, чтобы игрок мог положить палец туда, куда он хочет, и провести пальцем влево или вправо (все еще касаясь дисплея) и расстояние между позициями, где он начинает касаться, и тем, где он сейчас находится, квадрат должен двигаться вправо или влево. Когда игрок не касается, он не должен двигаться по оси X. Я сделал это, но у моего кода есть проблема, когда я отпускаю палец и снова касаюсь, не двигаясь вправо или влево, квадрат очень быстро отклоняется в одну сторону. Конечно, когда палец не двигается, квадрат не должен двигаться.
Изображение для лучшего понимания
// My Code
public class PlayerMovement : MonoBehaviour
{
void FixedUpdate()
{
// move the player constantly forward
transform.position += Vector3.forward * Time.deltaTime * speed;
if (Input.touchCount > 0)
{
touch = Input.GetTouch(0);
// the current finger position
touchedPosMoved = Camera.main.ScreenToWorldPoint(new Vector3(touch.position.x, touch.position.y, 10));
switch (touch.phase)
{
case TouchPhase.Began:
// get finger position when touch start
touchedPosBegan = Camera.main.ScreenToWorldPoint(new Vector3(touch.position.x, touch.position.y, 10));
startX = transform.position.x;
break;
case TouchPhase.Moved:
// claculate the distance between start and curent position of the finger
differenz = Mathf.Abs(touchedPosBegan.x - touchedPosMoved.x);
if (touchedPosBegan.x > touchedPosMoved.x)
{
differenz = differenz * -1;
}
break;
}
// Move player at the X-axis
Vector3 idk = new Vector3((startX + differenz) * 8, transform.position.y, transform.position.z);
gameObjectStart = new Vector3(startX, transform.position.y, transform.position.z);
transform.position = Vector3.Lerp(gameObjectStart, idk, Time.deltaTime * 2);
}
}
}
Кто-нибудь знает проблему или имеет другое решение для моего переместить игрока, как описано выше