【发布时间】:2023-04-09 07:05:01
【问题描述】:
我正在尝试使用 libgdx 开发一个简单的蛇游戏。我的问题是,每次我想生成一些苹果(纹理,20px 宽 X 20px 高)时,它总是与蛇的身体重叠。 我试图避免这种情况,但它在游戏过程中不断发生。
蛇由部分组成-每个部分都是20px宽X 20px高的纹理(屏幕宽度为480px宽X 800px高)
这是我迄今为止尝试过的:
public void addApple() {
accomplishedSnake = false;
accomplishedApples = false;
while (!accomplishedSnake && !accomplishedApples) {
xApple = 20 * MathUtils.random(0, 23);
yApple = 20 * MathUtils.random(20, 36);
if (!accomplishedSnake) {
for (int i = 0; i < snake.getSize(); i++) {
if (snake.getPart(i).getX() <= xApple
&& snake.getPart(i).getX() + 20 >= xApple
&& yApple >= snake.getPart(i).getY()
&& yApple <= snake.getPart(i).getY() + 20)
break;
if (i == snake.getSize() - 1) {
accomplishedSnake = true;
break;
}
}
}
if (!accomplishedApples) {
for (int i = 0; i < apples.size; i++) {
if (apples.get(i).getX() <= xApple && apples.get(i).getX()+20 >= xApple
&& yApple >= apples.get(i).getY() && yApple <= apples.get(i).getY()+20)
break;
if (i == apples.size - 1) {
accomplishedApples = true;
break;
}
}
}
}
apples.add(new Apple(xApple, yApple));
}
代码是不言自明的。每时每刻我的屏幕上都有 3 个不同的苹果。此代码尝试为新苹果抽奖 x-y 坐标,但在将苹果添加到屏幕并渲染之前,我想确保它不会与蛇或其他苹果的身体重叠。
我只是看不出这段代码有什么问题。
P.S 我尝试在 Rectangle 类中使用重叠方法,但它不起作用。
【问题讨论】:
标签: libgdx coordinates overlap rectangles