如何在javascript中检测两个图像之间的冲突?

时间:2016-02-22 16:18:03

标签: javascript image collision detection

我正在实施一个简单的游戏,我的汽车(图像)必须避开障碍物(圆圈(图像))。现在我在为汽车和圆圈制作碰撞检测方法时遇到问题。我希望一旦汽车碰撞,圆圈就会消失。现在我正在使用一个名为&#39; y&#39;显示汽车是否与蓝圈相撞。如果是的话,我的HTML代码部分中的<p>标记会使用该ID,它应显示文字说明&#34; COLLISION&#34;但即使它们相交......也没有任何反应......:/

function Intersect(ax ,ay , aw , ah , bx , by , bw , bh){
            return ax < bx + bw && bx < ax + aw && ay < by + bh && by < ay + ah;
    }
if (Intersect(this.x,this.y,this.w,this.h,bluecircleArray[0].x,bluecircleArray[0].y,bluecircleArray[0].width,bluecircleArray[0].height)){
                     document.getElementById("y").innerHTML = "COLLISION";
    }

1 个答案:

答案 0 :(得分:0)

我觉得你为Intersect所写的内容实际上是&#34; IsContainedIn&#34;功能。 Intersect的自然表达应该是这样,添加括号以帮助操作顺序:

&#34;(A的右侧X边缘是否包含在B中,OR是B中包含的A的左侧X边缘),和,(A的底边Y边缘是否包含在B,OR是B)&#34;

中包含的A的顶侧Y边缘

而且,详细说明,&#34;包含在&#34;中,意味着: &#34;这个数字是在B&#39的X / Y值和B&#39的X / Y值加上它的宽度&#34;

最终,if子句会变得非常大。

您当前等式的主要问题是所有陈述都与&#34;&amp;&amp;&#34;相关联。我不确定所有条款是否可以同时为真,除非其中一个条款可能以一种精确的方式放在另一个条款中。

如果您仍然无法将其写出来,可能会有一些关于&#34; Axis-Aligned Bounding Box Collision&#34;的教程。这可能有助于它 - 他们也可以提供视觉样本,以帮助您在脑海中获得空间概念。