物体不动?

时间:2016-01-10 02:44:07

标签: java object keyboard move velocity

我正在制作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:我认真工作!基本上,我不是从我的一个课程中产生我所做的玩家,而是在另一个课程中衍生出来!它似乎工作;)

1 个答案:

答案 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()的情况下,我无法说这是肯定的问题,但似乎很可能。