我正在尝试使用矩形为我的游戏实现碰撞检测,但似乎无法让它发挥作用。
每个帧按空格时都会更新项目符号,以便它们在屏幕上移动。显然我在这里被告知,碰撞箱也随之移动。我通过使用sprite.getBoundingBox()
得到这个,它为每个实例设置一个数据字段Rectangle为此值。
我有两个Arraylists,一个持有Monsters实例,一个持有子弹实例。它们都有与之关联的collisionRectangles。
只要子弹或怪物arraylist中存在某些东西,我就会从每个帧的主渲染循环中调用checkCollisions()
方法。
/*this handles collisions between bullets and enemies*/
public static void checkCollisions(){
for (int i = 0; i < Main.currentBullets.size(); i++){
for (int k = 0; k < Main.currentMonsters.size(); k++){
if (Intersector.overlaps(Main.currentBullets.get(i).collisionBoxBullet,
Main.currentMonsters.get(k).collisionBoxMonster)){
System.out.println("Boom headshot");
}
}
}
每次重叠时,这不应该是Boom Headshot吗?相反,似乎总是评估为真。
为什么它会继续评估为真,并写出热潮爆头?
答案 0 :(得分:0)
我没做的是设置精灵矩形的位置为0.0。然后我也没有使用collisionBox.setPosition()
正确移动碰撞盒。
它最初检查0/0处的精灵是否与0.0处的碰撞盒碰撞,这总是正确的,因此总是说它重叠。