如何使用java.awt.event.KeyListener平滑播放器移动

时间:2019-07-11 10:37:11

标签: java game-physics keylistener

我编写了一款突破游戏,其中我使用java.awt.event KeyListener处理输入。

每次我调用repaint()时;在我的javax.swing计时器中,我正在检查键盘输入,并根据所按下的键来增大/减小播放器的x位置。问题是,当我想朝相反的方向移动时,我的播放器静止了片刻,然后开始移动。我知道这很现实,但是我不希望这成为一个功能。我希望玩家朝相反的方向缓慢移动。

我的计时器每1000/60秒被调用

@Override
    public void actionPerformed(ActionEvent e) {
        switch(keyHandler.key) {
            case "LEFT":
                player.x -= player.speed;
                break;
            case "RIGHT":
                player.x += player.speed;
                break;
            default:

        }

        repaint();
    }

@Override
    public void keyPressed(KeyEvent e) {
        switch (e.getKeyCode()) {
            case KeyEvent.VK_LEFT:
            case KeyEvent.VK_A:
            case KeyEvent.VK_NUMPAD4:
                key = "LEFT";
                break;
            case KeyEvent.VK_RIGHT:
            case KeyEvent.VK_D:
            case KeyEvent.VK_NUMPAD6:
                key = "RIGHT";
                break;
            default:
                key = "" + e.getKeyChar();
        }
    }

0 个答案:

没有答案
相关问题