我正在制作我的第一个Java应用程序,而且为了玩游戏,我试图让绿砖移动到另一个绿砖。我想让它沿x轴移动然后沿y轴移动。我遇到的问题是我在单击鼠标时调用的函数中更改了对象的sx值,但是即使是保持它的变量的位置,它自身也不会移动的对象#x; sx位置确实有所改变。
public class GameState {
//Players variables
private int xPos = 50;
private int yPos = 50;
public void update() {
}
public void render(Graphics g) {
g.fillRect(0, 0, 640, 360);
Entitys.playerEntity(g, xPos, yPos, TAGS.CONTROLLABLE);
Entitys.walkingBoxEntity(g, 150, 150, TAGS.CLICKABLE);
}
public void mouseClicked(int mouseX, int mouseY) {
if (mouseX > 150 && mouseX < 200) {
if (mouseY > 150 && mouseY < 200) {
int destination = 150;
int moveDistance = destination -= xPos;
if (moveDistance > 0) {
for (int dM = 0; dM < moveDistance; dM++) {
xPos++;
System.out.println(xPos);
}
} else {
for (int dM = 0; dM > moveDistance; dM--) {
xPos--;
System.out.println(xPos);
}
}
}
}
}
}
持有玩家实体x位置的变量是xPos。如果我进入更新功能并转到xPos ++,它会在屏幕上移动。如果我创建一个具有代码行的函数并在更新函数中调用它,它就会移动。但是当我尝试在mouseClicked函数中执行它时它不会移动。如果我打印出xPos的值,它确实会改变,但砖块不会移动。为什么砖块会移动到clickedMouse函数之外但不在函数内部?