Java 精灵在不应该移动的时候不断移动
我不熟悉LibGDX和游戏制作。即使未按下键.UP,精灵也会继续向上移动。我不太清楚为什么会发生这种情况,因为我试图让它只在按下键时移动 我正在创建自己的inputprocessor类,它将处理游戏的所有输入,而不是每个类处理相同的事情。由于render方法,我的主类每帧调用player.updatedelta time 为什么即使没有按“向上”键,它也会不断向上移动?它不应该在下面的条件下失败吗?GameInputProcessor是实例gip 球员级别:Java 精灵在不应该移动的时候不断移动,java,input,libgdx,Java,Input,Libgdx,我不熟悉LibGDX和游戏制作。即使未按下键.UP,精灵也会继续向上移动。我不太清楚为什么会发生这种情况,因为我试图让它只在按下键时移动 我正在创建自己的inputprocessor类,它将处理游戏的所有输入,而不是每个类处理相同的事情。由于render方法,我的主类每帧调用player.updatedelta time 为什么即使没有按“向上”键,它也会不断向上移动?它不应该在下面的条件下失败吗?GameInputProcessor是实例gip 球员级别: public void update
public void update(float dt){
if (gip.keyDown(Keys.UP)){
this.position.y += this.velocity * dt;
}
GameInputProcessor类:
public boolean keyDown(int keycode){
switch(keycode){
case Keys.UP:
System.out.println("up being pressed");
return true;
}
return false;
}
您实际上并不是在测试密钥状态
gip.keyDown(Keys.UP)
对于此代码,将始终返回true
您希望代码看起来像
if(Gdx.input.isKeyPressed(Keys.UP))
this.position.y += this.velocity * dt;
}
如果您希望包装gdx类,那么将GIP修改为
public boolean keyDown(int keycode){
return Gdx.input.isKeyPressed(keyCode)
}
我是这样做的,但这意味着我必须把它放在我的player类中,我不想这样做,我想在GameInputProcessor类中处理它。但是它需要有一个来自最初创建它的主类的player实例的副本。我不太确定如何将此应用于GameInputProcessor类。非常感谢您的帮助。对于OO设计,这是一个好主意吗?让每个类只处理特定于类的事情?如果将来您可能想替换它,那么包装这些事情是很好的。然后你只需重写包装器,理论上一切都可以正常工作。我喜欢界面并经常使用它们。