我已经制作了一个游戏开始游戏,基本上是一个椭圆形的,可以使用键盘按键箭头将其移动到任何地方。

我不想让它退出框架,所以我检查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 || [...]) { [...]

10-04 13:39