gpt4 book ai didi

java - 使用算法和 Rectangle.intersects (java/lwjgl) 的碰撞检测

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:22:25 26 4
gpt4 key购买 nike

我知道这是一个经常发生的问题,但我似乎找不到问题所在。我到处都找过了!

我用于碰撞检测的算法是这样的:

if( (ent1.getX() >= ent2.getX() && ent1.getX() <= (ent2.getX() + ent2.getWidth())) ||
((ent1.getX() + ent1.getWidth()) >= ent2.getX() && (ent1.getX() + ent1.getWidth()) <= (ent2.getX() + ent2.getWidth())) ){

//Now we look at the y axis:
if( (ent1.getY() >= ent2.getY() && ent1.getY() <= (ent2.getY() + ent2.getHeight())) ||
((ent1.getY() + ent1.getHeight()) >= ent2.getY() && (ent1.getY() + ent1.getHeight()) <= (ent2.getY() + ent2.getHeight())) ){
//The sprites appear to overlap.
return true;
}else{
return false;
}
}

这个算法确实有效,我在调试器中发现了问题所在......

最佳答案

例如:

public static boolean intersects(Rectangle rect1, Rectangle rect2) {
double left1 = rect1.getX();
double top1 = rect1.getY();
double right1 = rect1.getX()+rect1.getWidth();
double bottom1 = rect1.getY()+rect1.getHeight();
double left2 = rect2.getX();
double top2 = rect2.getY();
double right2 = rect2.getX()+rect2.getWidth();
double bottom2 = rect2.getY()+rect2.getHeight();
return (
left1 < right2
&& top1 < bottom2
&& right1 > left2
&& bottom1 > top2
);
}

这是“边界独占”。

关于java - 使用算法和 Rectangle.intersects (java/lwjgl) 的碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28202704/

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