Попытка переместить 1 объект с помощью клавиш со стрелками и еще один с помощью Wasd - PullRequest
0 голосов
/ 11 мая 2019

Я работаю над 2D-игрой и хочу переместить левый блок с помощью клавиш со стрелками и правый блок с A и D, но я могу сделать только один ход с помощью WASD или клавиш со стрелками, я очень новичокв C # и Unity.

Я пытался сделать 2 «горизонтали», сделав один A и D, а другой с левой и правой стрелками в настройках проекта, но это, похоже, не работает, большое спасибо: *)

Это для игрока 1

    public float speed;

    private Rigidbody2D rb;
    private Vector2 moveVelocity;

    private void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    void Update()
    {
        Vector2 moveInput = new Vector2(Input.GetAxisRaw("Horizontal1"), 0f);
        moveVelocity = moveInput.normalized * speed;
    }

    void FixedUpdate()
    {
        rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime);
    }

И у игрока 2 тот же код, только с ("Horizontal2")

1 Ответ

0 голосов
/ 12 мая 2019

Вы можете использовать Input.GetKey(KeyCode) для чтения ввода игроков. Также назначьте ключевой код в инспекторе для каждого игрока.

Вот пример кода, который может помочь:

public KeyCode leftKey  = KeyCode.A; // Change to KeyCode.LeftArrow in inspector
public KeyCode rightKey = KeyCode.D;
public float   speed = 1.0f;

private Vector2 _moveVelocity;
private RigidBody2D _rigidBody;

private void Start()
{
    _rigidBody = GetComponent<Rigidbody2D>();
}

private void Update()
{
    Vector2 moveInput = Vector2.zero;
    if(Input.GetKey(leftKey))
    {
        moveInput = Vector2.left;
    }

    if(Input.GetKey(rightKey))
    {
        moveInput = Vector2.right;
    }

    _moveVelocity = moveInput * speed * Time.deltaTime;
    _rigidBody.velocity = _moveVelocity;

}


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