gpt4 book ai didi

java - Libgdx 矩形Arraylist仅最后一个作品

转载 作者:行者123 更新时间:2023-12-01 12:36:10 25 4
gpt4 key购买 nike

最近我正在制作一款像涂鸦跳跃这样的游戏,但我遇到了问题:

我为玩家将要掉落的平台制作了一个动态数组

ArrayList<Rectangle> plRec = new ArrayList<Rectangle>();

然后我在数组中随机添加 11 个平台,然后在 cicle 之后添加另一个平台,将在其中创建玩家!

//in the create method
plTxt = new Texture(Gdx.files.internal("ghiaccio.png"));

recPartenza = new Rectangle(); //the rectangle where the player starts
recPartenza.height = 25;
recPartenza.width = 100;
recPartenza.x = 50;
recPartenza.y = 10;

for(int i = 0; i <= 10; i++) { //11 rectangle added to the array
Rectangle rec = new Rectangle();
rec.height = 25;
rec.width = 100;
rec.x = MathUtils.random(50, 620);
rec.y = MathUtils.random(50, 620);
plRec.add(rec); //this add the rectangles randomlyzed to the array
}
plRec.add(recPartenza); // i add the start rectangle to the array

最后这将呈现在屏幕上。在我制定了一种接收玩家位置和平台位置的方法之后在渲染方法中:

for (Rectangle rectangle: plRec) {
if (IsOnTop(new Vector2(dpRec.x, dpRec.y), dpRec, new Vector2(rectangle.x, rectangle.y), rectangle)) {
//return true or false if the playes is on 3px up the platform
gravity = 0;//player stops
}
else {
gravity = 5; //plyer continue to fall
}
}

玩家仅停止阵列上的最后一个矩形!为什么这个 ?我希望玩家堵塞所有矩形

最佳答案

这是一个常见的错误。您需要确定是否有任何矩形与谓词匹配。在本例中,谓词是“玩家站在这个矩形上”。

您可以将其更改为:

boolean playerStands = false; //if player stands on any platform
for (Rectangle rectangle : plRec) {
if (/*same condition*/) {
playerStands = true;
break; //no need to check the other ones
} //no else
}
gravity = playerStands ? 0 : 5;

关于java - Libgdx 矩形Arraylist仅最后一个作品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25570311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com