Как сделать плавное движение игрока с помощью java.awt.event.KeyListener - PullRequest
0 голосов
/ 11 июля 2019

Я написал прорывную игру, в которой я обрабатываю ввод с помощью 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();
        }
    }
...