Движение игрока не работает правильно в игре unity2d - PullRequest
0 голосов
/ 12 сентября 2018

в моей игре движения вверх и вниз работают нормально, но правое и левое не работают.

вот мой код, любая помощь будет оценена.

   transform.position = Vector2.MoveTowards(transform.position, targetPos, speed * Time.deltaTime);

    if (Input.GetKeyDown(KeyCode.UpArrow) && transform.position.y < maxY)
    {

        targetPos = new Vector2(transform.position.x, transform.position.y + increment);
        transform.position = targetPos;
    }
    else if (Input.GetKeyDown(KeyCode.DownArrow) && transform.position.y > minY)
    {

        targetPos = new Vector2(transform.position.x, transform.position.y - increment);
        transform.position = targetPos;

    }

    else if (Input.GetKeyDown(KeyCode.RightArrow) && transform.position.x > minX)
    {

        targetPos = new Vector2(transform.position.x, transform.position.x + increment);
        transform.position = targetPos;

    }
    else if (Input.GetKeyDown(KeyCode.LeftArrow) && transform.position.x > minX)
    {

        targetPos = new Vector2(transform.position.y, transform.position.x - increment);
        transform.position = targetPos;

    }

1 Ответ

0 голосов
/ 12 сентября 2018

Потому что вы увеличиваете и уменьшаете только y-часть вектора Vector2 в двух последних, если вы используете часть.

Для правильной работы ваш код должен выглядеть следующим образом:

else if (Input.GetKeyDown(KeyCode.RightArrow) && transform.position.x <maxX)
    {
        targetPos = new Vector2(transform.position.x + increment, transform.position.y );
        transform.position = targetPos;
    }

и слева:

else if (Input.GetKeyDown(KeyCode.LeftArrow) && transform.position.x > minX)
{

    targetPos = new Vector2(transform.position.x - increment, transform.position.y);
    transform.position = targetPos;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...