如何在 javascript 中检测两个图像之间的冲突
How to detect collision between two images in javascript?
我正在实现一个简单的游戏,我的车(图像)必须躲避圆形(图像)的障碍物。现在我在为汽车和圆圈制作碰撞检测方法时遇到了问题。我希望圆圈在汽车与它相撞时立即消失。现在我使用一个名为"y"的 id 来显示汽车是否与蓝色圆圈相撞。如果是这样,id被我的HTML代码部分中的<p>
标签使用,它应该显示"碰撞"的文本,但即使它们相交......什么也没发生... :/
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";
}
我认为你为Intersect
写的实际上是一个"IsContainedIn
"函数。Intersect
的自然表达应该是这样的,并添加括号以帮助操作顺序:
左侧 X 边缘包含在 B 中),并且,(A 的底部 Y 边缘是否包含在 B 中,或者是否是 A 的顶部 Y 边缘包含在 B 中)"
而且,详细地说,"包含在"意味着:"这个数字是介于 B 的 X/Y 值和 B 的 X/Y 值加上其宽度之间的数字"
很有可能最终,if
条款会变得相当大。
当前方程的主要问题是所有语句都与"&&"相连。我不确定所有子句是否有可能同时为真,除非其中一个以确切的方式适合另一个。
如果您仍然无法将其写出来,可能会有一些关于"轴对齐边界框碰撞"的教程可以帮助您 - 他们也可以提供视觉样本,以帮助您在脑海中了解它的空间概念。
相关文章:
- 单击时切换两个图像
- 一个具有两个图像按钮的表单在只能按下一个按钮的情况下发送两个按钮值
- 如何使用 jQuery 交换网页中的两个图像(连续两次点击)
- 选择最短的旋转来排列两个图像
- 在jQuery中创建两个图像之间的行
- 将两个图像合并为一个,并使用javascript进行溢出隐藏
- 淡入淡出两个图像[JavaScript]
- 单击按钮时交换两个图像
- 可以在Javascript中比较两个图像
- 如何保存带有两个图像的画布
- 如何查看两个图像源是否相等
- 如何在两个图像之间添加空间
- CSS/Javascript/Jquery:显示/隐藏 DIV 取决于单击的两个图像之一
- 如何在 javascript 中检测两个图像之间的冲突
- 响应式设计:这个Javascript会导致浏览器下载两个图像吗?
- 比较两个图像的相等性(跨域)
- 单击时并排显示两个图像的按钮
- 如何使用 HTML 或 CSS 或 JS 重叠两个图像并在两者之间划一条交叉线,如以下示例所示
- 下拉框更改两个图像
- 枚举内容滑块一次显示两个图像