Два игрока управления для Unity - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь создать платформерную игру, в которой есть два играбельных персонажа. Когда пользователь нажимает на правую сторону экрана, первый символ прыгает, а когда нажимается на левой стороне экрана, другой символ прыгает.

Я смог заставить первого игрока прыгнуть, но не смог заставить второго прыгнуть.

if (Input.GetMouseButtonDown(0) && !IsDead)
{            
    jump = true;
}

Этот код работает для одного символа, но я не могу заставить второй символ прыгать.

EDIT

@ derHugo, спасибо за ответ. Я пытался реализовать код, который вы предоставили. Это работает для игрока 2, но игрок 1 не работает, как ожидалось. Вот что у меня есть:

public enum WhichPlayer
{
    Player1,
    Player2
};

public WhichPlayer whichPlayer;

void Update () {

 if (Input.GetMouseButtonDown(0) && !IsDead){            
    Vector2 position = Input.mousePosition;
    bool leftHalf = position.x <= Screen.width / 2;

    if (whichPlayer == WhichPlayer.Player1 && !leftHalf || whichPlayer == WhichPlayer.Player2 && leftHalf)
        {
            jump = true;
            animator.SetBool("Jump", true);
        } else {        
       jump = false;
       animator.SetBool("Jump", false);            
    }

Игрок 2: при нажатии левой стороны экрана игрок 2 прыгает и воспроизводится анимация. При щелчке правой стороны экрана игрок 2 остается на земле, а анимация не воспроизводится.

Игрок 1: при нажатии правой стороны экрана игрок 1 прыгает и воспроизводится анимация. При щелчке левой стороны экрана игрок 1 все еще прыгает, но анимация не воспроизводится. Я не могу понять, почему игрок 1 все еще прыгает, потому что анимация останавливается, и это из-за кода в блоке "else".

1 Ответ

0 голосов
/ 17 июня 2019

Я не вижу флажок для принятия решения

Когда пользователь щелкает по правой стороне экрана, первый символ скачет, а когда нажимается левая сторона экрана, другойперсонаж прыгает.

Для этого требуется две вещи:

  • "Игроку" нужно, чтобы двое знали, игрок это1 или игрок2

    Вы можетеиспользуйте, например, enum для этого типа

    public enum WhichPlayer
    {
        Player1,
        Player2
    }
    

    и в своем скрипте Player добавьте его в качестве поля

    public WhichPlayer whichPlayer;
    

    и установите его в Инспекторе.

  • Вам необходимо проверить, нажали ли вы на правую или левую часть экрана

    if (Input.GetMouseButtonDown(0) && !IsDead)
    {
        // get mouse position
        var position = Input.mousePosition;
    
        // get left or right half of screen
        // it is left if the mouseposition x 
        // is smaller then the center of the screen
        var leftHalf = position.x <= Screen.width / 2;
    
        // finally check player type and screen side
        if(whichPlayer == Player1 && leftHalf || whichPlayer == Player2 && !leftHalf)
        {
            jump = true;
        }
    }
    

    (см. Screen.width и Input.mousePosition обав пикселях)

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