Я использую keybinds, как это, например, нижнюю клавишу со стрелкой:Java 2D игра персонажа ходьба?
public class Bottom extends AbstractAction {
private GameScreen gameScreen;
public Bottom (GameScreen p) {
this.gameScreen = p;
this.gameScreen.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0), "Bottom");
}
@Override
public void actionPerformed(ActionEvent e) {
this.gameScreen.getMovement().moveDown();
}
}
И затем я обнаружить их с помощью movement.java:
public class Movement {
private Player player;
public Movement(Player p) {
this.player = p;
}
public void moveRight() {
}
public void moveLeft() {
}
public void moveUp() {
}
public void moveDown() {
}
public void jump() {
this.player.jump();
}
}
и обрабатывается здесь:
public class Keybinds {
private GameScreen panel;
public Keybinds(GameScreen game) {
this.panel = game;
this.addKeybinds();
}
private void addKeybinds() {
addKey("Bottom", new Bottom(this.panel));
addKey("Space", new Space(this.panel));
}
private void addKey(String bind, AbstractAction a) {
this.panel.getActionMap().put(bind, a);
}
}
Во всяком случае, ОС по умолчанию имеет таймер повторения для ключей, поэтому, когда я нажимаю на клавишу, это было около 1,3 секунд, а затем продолжает повторяться. Я пытаюсь сделать гладкую ходьбу для своей игры.
В моей игре нет бега, только пешком, но я не уверен, как бы я это сделал.
Я могу добавить ходячую очередь, чтобы она добавила, какое направление было запрошено &, затем цикл, который проходит через ходовые очереди и делает это, но когда ключи начнут повторять каждую миллисекунду или что-то idk задержка повторения после основной задержки, он добавит так много ходячих очередей, которые вы знаете, мой персонаж будет так далеко. Я думал о добавлении таймера, поэтому он может добавлять новую очередь каждые 1 секунду или что-то в этом роде, но как мне это сделать? или есть лучший способ добавить систему ходьбы?