gpt4 book ai didi

java - 我的边缘碰撞算法无法正常工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:20:07 25 4
gpt4 key购买 nike

if(pl.y+pl.height >= a.y && pl.x+pl.width >= a.x+1 && pl.x <= a.x+a.width-1 && pl.y<=a.y) { //TOP
colUP=true;
}
else colUP=false;

if(pl.y <= a.y+a.height && pl.x+pl.width >= a.x+1 && pl.x <= a.x+a.width-1 && pl.y+pl.height>=a.y+a.height) { //BOTTOM
colDOWN=true;
}
else colDOWN=false;

if(pl.x <= a.x+a.width && pl.x+pl.width>a.x+a.width && pl.y+pl.height >= a.y && pl.y <= a.y+a.height){ //RIGHT
colRIGHT=true;
}
else colRIGHT=false;

if(pl.x+pl.width >= a.x && pl.x<a.x && pl.y+pl.height >= a.y && pl.y <= a.y+a.height){ //LEFT
colLEFT=true;
}
else colLEFT=false;

我设置了一个调试程序,它将告诉我 4 个 boolean 值中的哪一个被设置为真,并且当我将框“pl”放在框“a”之上时,它们不显示 colUP 不等于真,并且它们只会在盒子 'pl' 与几个盒子 'a' 碰撞的奇怪情况下实现,并且某一侧的碰撞可能是真实的,但如果 colUP 为真,则 colRIGHT 出于某种原因为真. (此代码位于一个 for 循环内,该循环遍历矩形数组列表并将当前矩形设置为等于变量“a”,以便 a.x 是框的 x 位置)

最佳答案

您的逻辑是正确的,但是您分别为每个条件设置了 false。实际上,所有条件都应为真。因此,使用一个 boolean 变量——isInRectangle=true;然后检查所有条件 - 左、右、上、下。如果有任何不正确则 isInRectangle=false;

对于所有 4 个条件,这是简单且合乎逻辑的操作。

关于java - 我的边缘碰撞算法无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29932288/

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