Страница 1 из 1

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

СообщениеДобавлено: 15 ноя 2019, 20:54
alborov011
я делаю игру для двоих на юнити. два игрока играют на одной клаве, у одного управление стрелками, у другого 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,
}

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

СообщениеДобавлено: 16 ноя 2019, 06:27
immeasurability
Input.GetAxis("Horizontal") в настройках управления нужно убрать в Horizontal дублирование стрелками
по умолчанию Horizontal это и WASD и стрелки

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

СообщениеДобавлено: 16 ноя 2019, 22:57
arahis
Может тут нужно многопоточность? Кто в потоках спец? (popcorn1)

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

СообщениеДобавлено: 16 ноя 2019, 23:49
Saltant
Назнач просто каждому отдельному игроку отдельное управление, одному wasd другому стрелки, как сказали в комменте выше поправь эвентсистем, потом в скрипт добавь условие проверки тега игрока 1 и игрока 2, и подрубай каждому свое управление - например игроку 1 - wasd, а второму стрелки.

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

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

Спасибо большое! все работает