我正在用java编写一个小游戏,一个明显的关键组件是能够用箭头键移动角色。但是我无法使所有方向都能正常工作,并且只有最后两个if语句的实际激活。
public void Update(){
if(Canvas.keyboardKeyState(KeyEvent.VK_UP))
yVel = -1;
else
yVel = 0;
if(Canvas.keyboardKeyState(KeyEvent.VK_LEFT))
xVel = -1;
else
xVel = 0;
if(Canvas.keyboardKeyState(KeyEvent.VK_DOWN))
yVel = 1;
else
yVel = 0;
if(Canvas.keyboardKeyState(KeyEvent.VK_RIGHT))
xVel = 1;
else
xVel = 0;
x += xVel;
y += yVel;
}
我的输入很好,所有键都在注册,但没有数学正在进行。如果有人有建议或图书馆/包装可以让这更容易,请告诉我。
答案 0 :(得分:1)
您覆盖else
块中的值。你可能想要这样做。
public void Update(){
xVel = 0;
yVel = 0;
if(Canvas.keyboardKeyState(KeyEvent.VK_UP)) {
yVel -= 1;
}
if(Canvas.keyboardKeyState(KeyEvent.VK_LEFT)) {
xVel -= 1;
}
if(Canvas.keyboardKeyState(KeyEvent.VK_DOWN)) {
yVel += 1;
}
if(Canvas.keyboardKeyState(KeyEvent.VK_RIGHT)) {
xVel += 1;
}
x += xVel;
y += yVel;
}
答案 1 :(得分:0)
非常明显。每次循环执行时都会发生类似这样的事情:
如果它执行第一个if
语句,它还会执行else statements
的其余部分。
它应该是这样的:
xVal = 0;
yVal = 0;
if(keyDown){
yVal++;
}
else if(keyUp){
yVal--;
}
else if(keyLeft){
xVal--;
}
else{
xVal++;
}
//Your rest of the code.