Как двигаться вправо и влево с помощью касания? - PullRequest
0 голосов
/ 23 июня 2019

Я хочу переместить символ влево и вправо со всего экрана, и если я переместлюсь из любого места влево или вправо, ему нужно переместить только то, сколько у меня сейчас = 1,5f

У меня есть этот код иработает отлично, но работает только с мышью, а не с сенсорным экраном:

if (!isMoving && Input.GetMouseButtonDown(0))
{
    desiredPos = transform.position + Vector3.right * 1.52f;
    isMoving = true;
}

if (!isMoving && Input.GetMouseButtonDown(1))
{
    desiredPos = transform.position - Vector3.right * 1.52f;
    isMoving = true;
}

if (isMoving)
{
    transform.position = Vector3.MoveTowards(transform.position, desiredPos, moveSpeed * Time.deltaTime);

    // this == is true if the difference between both
    // vectors is smaller than 0.00001
    if (transform.position == desiredPos)
    {
        isMoving = false;

        // So in order to eliminate any remaining difference
        // make sure to set it to the correct target position
        transform.position = desiredPos;
    }
}

Я пытался реализовать этот код, но он не работает

private void Update()
{
    timer += Time.deltaTime;

    int i = 0;
    //loop over every touch found
    while (i < Input.touchCount)
    {
        if (!isMoving && Input.GetTouch(i).position.x > ScreenWidth / 2)
        {
            //move right
            desiredPos = transform.position + Vector3.right * 1.52f;
            isMoving = true;
        }
        if (!isMoving && Input.GetTouch(i).position.x < ScreenWidth / 2)
        {
            //move left
            desiredPos = transform.position - Vector3.right * 1.52f;
            isMoving = true;
        }
        ++i;
    }


    if (isMoving)
    {
        transform.position = Vector3.MoveTowards(transform.position, desiredPos, moveSpeed * Time.deltaTime);

        // this == is true if the difference between both
        // vectors is smaller than 0.00001
        if (transform.position == desiredPos)
        {
            isMoving = false;

            // So in order to eliminate any remaining difference
            // make sure to set it to the correct target position
            transform.position = desiredPos;
        }
    }
}

Этот второй код слишком сильно перемещает символвлево или вправо, и мне нужно двигаться точно так же, как в первом коде, но с помощью прикосновения пальцем влево или вправо.

Я хочу, чтобы что-то подобное двигалось точно на 1,5f

e

1 Ответ

1 голос
/ 23 июня 2019

Чтобы вести себя так же, как GetMouseButtonDown, нужно также проверить фразу касания:

Input.GetTouch(i).phrase == TouchPhase.Began
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...