当前位置: 首页 > 面试题库 >

Javascript:碰撞检测

燕志学
2023-03-14
问题内容

有人可以帮我了解JS中冲突检测的工作原理吗?我不能使用jQuery或gameQuery-已经使用了原型-
因此,我正在寻找非常简单的东西。不要求完整的解决方案,只需为我指明正确的方向。

假设有:

<div id="ball"></div>
and 
<div id="someobject0"></div>

现在球正在移动(任何方向)。“ Someobject”(0-X)已经预先定义,其中有20-60个随机放置,如下所示:

#someobject {position: absolute; top: RNDpx; left: RNDpx;}

我可以创建一个位置为“ someobject(X)”的数组,并在“球”移动时测试碰撞。类似:

for(var c=0; c<objposArray.length; c++){
........ and code to check ball's current position vs all objects one by one....
}

但是我想这将是一个“菜鸟”解决方案,而且看起来很慢。有更好的吗?


问题答案:

首先要具有的实际功能是检测球与物体之间是否存在碰撞。

为了提高性能,最好实现一些粗略的碰撞检测技术,例如边界矩形,如果需要检测到碰撞,则需要一种更精确的检测技术,这样您的函数将运行得更快一些,但使用相同的循环

可以帮助提高性能的另一个选项是对您拥有的对象进行一些预处理。例如,您可以将整个区域像通用表一样分成多个单元格,并存储特定单元格中包含的适当对象。因此,要检测碰撞,您要检测球所占据的单元,从这些单元中获取物体并使用碰撞检测功能。

为了进一步提高速度,您可以实现2d-tree,quadtree或R-tree。



 类似资料:
  • 碰撞检测 现在你知道了如何制造种类繁多的图形对象,但是你能用他们做什么?一个有趣的事情是利用它制作一个简单的 碰撞检测系统 。你可以用一个叫做:hitTestRectangle 的自定义的函数来检测两个矩形精灵是否接触。 hitTestRectangle(spriteOne, spriteTwo) 如果它们重叠, hitTestRectangle 会返回 true。你可以用 hitTestRect

  • 本节暂未进行完全的重写,错误可能会很多。如果可能的话,请对照原文进行阅读。如果有报告本节的错误,将会延迟至重写之后进行处理。 当试图判断两个物体之间是否有碰撞发生时,我们通常不使用物体本身的数据,因为这些物体常常会很复杂,这将导致碰撞检测变得很复杂。正因这一点,使用重叠在物体上的更简单的外形(通常有较简单明确的数学定义)来进行碰撞检测成为常用的方法。我们基于这些简单的外形来检测碰撞,这样代码会变得

  • 本文向大家介绍javascript实现拖拽碰撞检测,包括了javascript实现拖拽碰撞检测的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了javascript实现拖拽碰撞检测的具体代码,供大家参考,具体内容如下 拖拽碰撞检测碰撞改变颜色 css: html: js: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍基于javascript实现碰撞检测,包括了基于javascript实现碰撞检测的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了javascript实现碰撞检测的具体代码,供大家参考,具体内容如下 碰撞检测原理图如上: 我们检测碰撞时,发现两个div碰上检测比没碰上的检测要难,所以以没碰上作为检测条件。画上九宫格,当红色div在黄色div左边线或是右边线或是上边线或是下

  • 我已经尝试添加冲突检测一段时间了,但似乎做不到... 要绘制地图,我只需使用x,y坐标: 使用这种方法,我想出了这种检测: 我一直在尝试使用for循环遍历树来检测玩家(一个矩形)是否穿过树,但我想不出任何东西。 我已经试过了 如果碰撞=true,player.update(碰撞)将矩形更改为红色,如果为false,将矩形变为黑色。 我已尝试使用for和if,例如: 等但这不起作用,它只适用于wit

  • 所以我试图用Python和Pyplay创建一个益智平台游戏,但是我遇到了一点麻烦。当我为主要角色使用单点图像,而不是矩形图像时,如何制作碰撞检测器?我知道直角图像有左、右、顶部和底部像素功能(这对冲突检测非常有用),但是对于单片图像有这样的功能吗?或者我只需要为x和y坐标创建一个变量图像的宽度/高度?我试过用那个 但是catImg一直在通过窗户的尽头。我做错了什么?提前谢谢。