我正在制作Java游戏,但我遇到了问题。我的目标不动:
以下是一些代码:
public void keyPressed(KeyEvent e){
int key = e.getKeyCode();
for (int i = 0; i < handler.object.size(); i++){
GameObject temp = handler.object.get(i);
if (temp.getC() == Char.StarPlayer && Stardust.keyEnabled){
System.out.println("test");
System.out.println(temp.getY());
if (key == KeyEvent.VK_W) temp.setY(-5);
if (key == KeyEvent.VK_A) temp.setVelY(5);
if (key == KeyEvent.VK_S) temp.setVelX(-5);
if (key == KeyEvent.VK_D) temp.setVelX(5);
}
}
}
基本上,我得到任何&#34; GameObject&#34;具有角色ID&#34; StarPlayer&#34; (Char.StarPlayer)附加到它,以及键盘启用时(keyEnabled)。当它到达这里时似乎工作得很好,因为它输出&#34; test&#34;和对象的Y值进入控制台。但是,该对象实际上并不移动。每次按下它时,对象应该处于不同的Y级别,但是每次按下它时控制台都会保持相同的数字。我不知道发生了什么!我正在设置速度,你可以在这个代码中看到&#34; StarPlayer&#34;:
public void tick(){
x += velX;
y += velY;
y = Stardust.clamp(y, 0, Stardust.HEIGHT - 64);
x = Stardust.clamp(x, 0, Stardust.WIDTH - 32);
}
将速度添加到实际x值以使其移动。它以前工作过,但由于某种原因它现在还没有工作。
请尽快帮助;) - Blockhead7360
编辑:Clamp不会打断这个(我不这么认为)。同样的事情以前也有用,并且由于某些原因现在不起作用....如果你需要,我猜这里是夹钳:
public static int clamp(int var, int min, int max){
if (var >= max){
return var = max;
}else if (var <= min){
return var = min;
}else return var;
}
编辑2:我尝试取出CLAMP但仍然没有移动?!?
编辑3:我认真工作!基本上,我不是从我的一个课程中产生我所做的玩家,而是在另一个课程中衍生出来!它似乎工作;)
答案 0 :(得分:0)
看起来问题是您更新x和y,但之后立即将其设置为clamp()
的其他内容。
public void tick(){
x += velX;
y += velY;
y = Stardust.clamp(y, 0, Stardust.HEIGHT - 64); // This (might) be your problem
x = Stardust.clamp(x, 0, Stardust.WIDTH - 32);
}
在不知道clamp()
的情况下,我无法说这是肯定的问题,但似乎很可能。