我在玩家,子弹和敌人之间的javascipt游戏中发生了碰撞。以前,子弹是矩形,但我现在有图像。图像紧密地嵌入矩形框中,预计2D碰撞将起作用。这是图像:
子弹有点矩形。我在碰撞系统中使用这个逻辑:
return rect1.x <= rect2.x+rect2.width
&& rect2.x<=rect1.x+rect1.width
&& rect1.y<=rect2.y+rect2.height//if all statements are true, they are colliding
&& rect2.y<=rect1.y+rect1.height;
碰撞有点起作用,然而,子弹可以显着低于玩家并且仍然触发碰撞,并且它可以显着地是从顶部进入玩家内部的第三种方式而不会触发碰撞。我能做些什么来解决它吗?碰撞系统只用矩形完美地工作,应该在这里足够接近,但它还不够好。如果您想亲自查看源代码和问题,这里是我开发中实际游戏的链接: JS Game
答案 0 :(得分:1)
尝试删除你的等号,不要检查是否有碰撞但是要“在外面”。
if (rect1.x + rect1.width < rect2.x) //left outside
return false;
if (rect1.x > rect2.x + rect2.width) //right outside
return false;
if (rect1.y + rect1.height < rect2.y) //above/below outside
return false;
if (rect1.y > rect2.y + rect2.height) //above/below outside
return false;
return true;
(你也可以将它们包装成一行,但我希望这能说明我想说的话)这个例子对你的游戏有不同的作用吗?