我已经制作了一个游戏开始游戏,基本上是一个椭圆形的,可以使用键盘按键箭头将其移动到任何地方。
我不想让它退出框架,所以我检查X是否小于0,如果大于宽度返回,则返回y。
但是它不适用于高度,我可以在右边和底部移动,直到退出框架为止,为什么?
这是代码,(我没有使用myHeight,myWidth我手动输入尺寸,尺寸为765、500)。
public void movePlayer(int x, int y) {
System.out.println(myPlayer.getX());
if (x == 0) {
if (y + myPlayer.getY() > 500 || y + myPlayer.getY() < 0) {
return;
}
this.myPlayer.moveY(y);
}
else if (y == 0) {
if (x + myPlayer.getX() > 765 || x + myPlayer.getX() < 0) {
return;
}
this.myPlayer.moveX(x);
}
}
为什么会这样呢?
最佳答案
好吧,您要检查的点(您的x和y)代表椭圆的左上角。检查底部时必须增加高度,而检查右边时必须增加宽度。
if (y + myPlayer.getY() + myPlayer.getHeight() > 500 || [...]) { [...]
和
if (x + myPlayer.getX() + myPlayer.getWidth() > 765 || [...]) { [...]