更新时多次调用KeyPressed

时间:2019-02-15 22:31:41

标签: unity3d

我正在尝试向角色添加攻击,但除​​按钮多次单击外,其他所有操作均正常(我没有按住该键,并且平均按下了4次)。

那是我的更新方法:

void Update() {
    attackArea.enabled = false;
    InputCharacter();
    MoveAttackArea();
    SetAnimation();
    ApplyColorFilters();
}

和我的InputCharacter方法:

void InputCharacter() {
    direction = Vector2.zero;
    if (Input.GetKey(KeyCode.B)) {
        lastAttackTime = currentTime;
        Attack();
    } else if (Input.GetKey(KeyCode.UpArrow) || Input.GetKey(KeyCode.W)) {
        Move(Vector2.up);
    } else if (Input.GetKey(KeyCode.DownArrow) || Input.GetKey(KeyCode.S)) {
        Move(Vector2.down);
    } else if (Input.GetKey(KeyCode.LeftArrow) || Input.GetKey(KeyCode.A)) {
        Move(Vector2.left);
    } else if (Input.GetKey(KeyCode.RightArrow) || Input.GetKey(KeyCode.D)) {
        Move(Vector2.right);
    }
}

也是我的Attack方法:

private void Attack() {
    Debug.Log("attacking");
    animator.SetTrigger("attack");
    attackArea.enabled = true;
}

我不知道这部分是否相关,但是:

日志显示多次,我的动画播放了两次(当我播放对象破坏动画时,它运行了两次,我不知道它是否相关)

1 个答案:

答案 0 :(得分:1)

替换

grouped.apply(lambda group: group[group['B'] == group['B']].min())

使用

Input.GetKey