gpt4 book ai didi

Java 2D游戏角色行走?

转载 作者:行者123 更新时间:2023-12-01 13:26:08 24 4
gpt4 key购买 nike

我正在使用按键绑定(bind),如下所示,例如底部箭头键:

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();
}

}

然后我通过 moving.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 秒左右,然后继续重复。我正在努力让我的游戏顺利行走。

我的游戏没有运行,只有步行,但我不知道该怎么做。

我可以添加步行队列,这样它就会添加所请求的方向,然后是一个循环遍历步行队列并执行此操作的循环,但是当按键开始每毫秒重复一次或在主延迟之后重复延迟时,它会增加如此多的步行队列,你知道,我的角色会走得很远。我想添加一个计时器,这样它就可以每 1 秒添加一个新队列或类似的东西,但我该怎么做呢?或者有更好的添加行走系统的方法吗?

最佳答案

不要使用 KeyListener。 Swing 被设计为与按键绑定(bind)一起使用。

I thought of adding a timer,

是的,您应该使用计时器,这样您就不会依赖于操作系统 key 重复率。

参见Motion With the Keyboard了解更多信息以及使用按键绑定(bind)和计时器的示例。

关于Java 2D游戏角色行走?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21799366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com