игра на двоих юнити.

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

игра на двоих юнити.

Сообщение alborov011 15 ноя 2019, 20:54

я делаю игру для двоих на юнити. два игрока играют на одной клаве, у одного управление стрелками, у другого A, D, W.
сделал два скрипта на каждого игрока. различие только в кнопках управления.
но, когда я пытаюсь управлять сразу двумя игроками они как будто связаны и не могут ходить, по одному все хорошо работает.
в Юнити я новичек.
как это исправить ?

Синтаксис:
Используется csharp
[SerializeField]
    private float speed = 15.0f;
    [SerializeField]
    private float jumpForce = 15.0f;
    [SerializeField]
    private int lives = 5;

    private bool isgrounded = false;

    private Rigidbody2D rb;
    private Animator animator;

    private CharStatE State
    {
        get { return (CharStatE)animator.GetInteger("State"); }
        set { animator.SetInteger("State", (int)value); }
    }

    private void Awake()
    {
        rb = GetComponent<Rigidbody2D>();
        animator = GetComponent<Animator>();
    }

    private void FixedUpdate()
    {
        ChekGround();
    }

    private void Update()
    {
        if (isgrounded) State = CharStatE.Idle;
        if (Input.GetKey(KeyCode.LeftArrow) || Input.GetKey(KeyCode.RightArrow)) Run();
        if (Input.GetKeyDown(KeyCode.UpArrow) && isgrounded) Jump();


    }

    private void Run()
    {
        Vector3 direction = transform.right * Input.GetAxis("Horizontal");
        transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, speed * Time.deltaTime);
        if (isgrounded) State = CharStatE.Run;
       

    }

    private void Jump()
    {
        rb.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);

    }

    private void ChekGround()
    {
        Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, 0.9f);
        isgrounded = colliders.Length > 1;
        if (!isgrounded) State = CharStatE.Jump;
    }

}

public enum CharStatE
{
    Idle,
    Run,
    Jump,
}
alborov011
UNец
 
Сообщения: 10
Зарегистрирован: 15 ноя 2019, 20:44

Re: игра на двоих юнити.

Сообщение immeasurability 16 ноя 2019, 06:27

Input.GetAxis("Horizontal") в настройках управления нужно убрать в Horizontal дублирование стрелками
по умолчанию Horizontal это и WASD и стрелки
Discord era#6140

youtube.com/user/immeasurability/videos
Аватара пользователя
immeasurability
Адепт
 
Сообщения: 1097
Зарегистрирован: 08 авг 2013, 18:09

Re: игра на двоих юнити.

Сообщение arahis 16 ноя 2019, 22:57

Может тут нужно многопоточность? Кто в потоках спец? (popcorn1)
Аватара пользователя
arahis
UNIт
 
Сообщения: 58
Зарегистрирован: 02 ноя 2011, 23:18
Откуда: Центральная Украина

Re: игра на двоих юнити.

Сообщение Saltant 16 ноя 2019, 23:49

Назнач просто каждому отдельному игроку отдельное управление, одному wasd другому стрелки, как сказали в комменте выше поправь эвентсистем, потом в скрипт добавь условие проверки тега игрока 1 и игрока 2, и подрубай каждому свое управление - например игроку 1 - wasd, а второму стрелки.
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2234
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт

Re: игра на двоих юнити.

Сообщение alborov011 19 ноя 2019, 22:42

Saltant писал(а):Назнач просто каждому отдельному игроку отдельное управление, одному wasd другому стрелки, как сказали в комменте выше поправь эвентсистем, потом в скрипт добавь условие проверки тега игрока 1 и игрока 2, и подрубай каждому свое управление - например игроку 1 - wasd, а второму стрелки.

Спасибо большое! все работает
alborov011
UNец
 
Сообщения: 10
Зарегистрирован: 15 ноя 2019, 20:44


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 27