gpt4 book ai didi

java - LibGDX:碰撞仅适用于一个矩形

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

在我的 Android 游戏中,只要我的数组中只有一个矩形,碰撞就会起作用,因此它适用于:

rects = new Rectangle[1];
for(int i = 0; i < rects.length; ++i)
rects[i] = new Rectangle(i * 150, 0, 150, 150);

但如果我添加另一个矩形 rects = new Rectangle[2];

我的碰撞代码如下所示:

public boolean collision(Rectangle rect){
return (Intersector.overlaps(playerBound, rect));
}

我这样使用它:

for(int i = 0; i < rects.length; ++i){
if(!collision(rects[i]))
player.setY(player.getY() - 1f);
}

playerBound 的初始化如下:playerBound = new Rectangle(player.getX(),player.getY(),player.getWidth(),player.getHeight() + 1);

有什么问题吗?我不明白如果数组中只有一个矩形它如何工作,但如果有更多矩形则不行。

最佳答案

嗯,那是因为这里的代码 fragment 存在逻辑错误:

for(int i = 0; i < rects.length; ++i){
if(!collision(rects[i]))
player.setY(player.getY() - 1f);
}

您检查多个矩形是否发生碰撞。我们假设数组中的第一个引起碰撞。好吧,Y 不会改变。现在还有另一个矩形。第二个矩形将不会引起碰撞。现在会发生什么?即使发生了碰撞,您也可以更改玩家的 Y 值。

将其更改为如下所示:

boolean collision = false;
for(int i = 0; i < rects.length; ++i){
if(collision(rects[i]))
collision = true;
}

if (collision == false)
player.setY(player.getY() - 1f);

关于java - LibGDX:碰撞仅适用于一个矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21938292/

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