我正在构建2D物理引擎,我想添加广相碰撞检测,尽管我只知道2种或3种类型:
但是肯定还有更多选择吧?这些是什么?并可以提供每一个的基本描述或描述的链接吗?
我已经看到了这一点,但是我想索取可用的算法列表,而不是满足我需要的最佳算法。
在这种情况下,“宽相碰撞检测”是物理引擎用来确定其模拟中的哪些物体足够接近以值得进一步研究并可能解决碰撞的方法。
最佳方法取决于特定用途,但最重要的是要细分您的世界空间,以便(a)每个实体都精确地在一个细分中,(b)每个细分都足够大,以至于某个细分中的一个实体只能与同一细分或相邻细分中的实体发生碰撞,并且(c)特定细分中的实体的数量应尽可能小。
您如何执行此操作取决于您拥有多少个车身,它们如何运动,对性能的要求是什么以及要在引擎上花费多少时间。如果您正在谈论物体在一个很大的开放空间中移动,最简单的方法是将世界划分为一个网格,其中每个单元格都比最大对象大,并跟踪每个单元格中的对象列表。如果您要在经典街机游戏的规模上构建某种东西,那么此解决方案可能就足够了。
如果您要处理在更大的开放世界中移动的物体,则简单的网格将很快变得不堪重负,并且您可能想要某种基于树的结构,例如四叉树,正如Arriu所建议的那样。
如果您要谈论的是在有界空间而不是开放空间中移动物体,那么您可以考虑使用BSP树;树木将世界划分为“您可以进入的空间”和“墙壁”,然后将尸体修剪到树木中确定其是否处于合法位置。根据世界的几何形状,您还可以使用BSP对世界上的物体之间的碰撞进行广义检测。
在有限空间内移动的物体的另一种选择是门户引擎。如果您的世界可以由凸多边形区域组成,其中多边形的每一边都是实心墙或通往另一个凹空间的“门户”,则可以通过多边形点检验轻松地确定物体是否在区域内,并且仅查看同一区域或连接区域中的物体,即可简化碰撞检测。
我正在制作我的第一个自由移动(不是瓷砖限制)2d游戏,想知道如何使用冲突检测。我有3种可能的方法在我的脑海中,但不确定什么是最有效的: > 地图上的每个物体都有一个比图像本身更小的纹理(例如,一棵树只有一个更小的纹理代表它的底部),不能碰撞。为此,我会使用第二个不可见的纹理来标记该区域。 每个对象都有一个用于碰撞的矩形或圆形区域。可能每个纹理都需要一个辅助文件,说明碰撞的大小(再次以树为例)。 我
碰撞检测 现在你知道了如何制造种类繁多的图形对象,但是你能用他们做什么?一个有趣的事情是利用它制作一个简单的 碰撞检测系统 。你可以用一个叫做:hitTestRectangle 的自定义的函数来检测两个矩形精灵是否接触。 hitTestRectangle(spriteOne, spriteTwo) 如果它们重叠, hitTestRectangle 会返回 true。你可以用 hitTestRect
本节暂未进行完全的重写,错误可能会很多。如果可能的话,请对照原文进行阅读。如果有报告本节的错误,将会延迟至重写之后进行处理。 当试图判断两个物体之间是否有碰撞发生时,我们通常不使用物体本身的数据,因为这些物体常常会很复杂,这将导致碰撞检测变得很复杂。正因这一点,使用重叠在物体上的更简单的外形(通常有较简单明确的数学定义)来进行碰撞检测成为常用的方法。我们基于这些简单的外形来检测碰撞,这样代码会变得
问题内容: 有人可以帮我了解JS中冲突检测的工作原理吗?我不能使用jQuery或gameQuery-已经使用了原型- 因此,我正在寻找非常简单的东西。不要求完整的解决方案,只需为我指明正确的方向。 假设有: 现在球正在移动(任何方向)。“ Someobject”(0-X)已经预先定义,其中有20-60个随机放置,如下所示: 我可以创建一个位置为“ someobject(X)”的数组,并在“球”移动
我已经尝试添加冲突检测一段时间了,但似乎做不到... 要绘制地图,我只需使用x,y坐标: 使用这种方法,我想出了这种检测: 我一直在尝试使用for循环遍历树来检测玩家(一个矩形)是否穿过树,但我想不出任何东西。 我已经试过了 如果碰撞=true,player.update(碰撞)将矩形更改为红色,如果为false,将矩形变为黑色。 我已尝试使用for和if,例如: 等但这不起作用,它只适用于wit
所以我试图用Python和Pyplay创建一个益智平台游戏,但是我遇到了一点麻烦。当我为主要角色使用单点图像,而不是矩形图像时,如何制作碰撞检测器?我知道直角图像有左、右、顶部和底部像素功能(这对冲突检测非常有用),但是对于单片图像有这样的功能吗?或者我只需要为x和y坐标创建一个变量图像的宽度/高度?我试过用那个 但是catImg一直在通过窗户的尽头。我做错了什么?提前谢谢。
我有一些关于碰撞角度的问题。我正在尝试为一个游戏编写物理代码,我不想使用任何第三方库,实际上我想自己编写每一个东西。我知道如何检测两个球体之间的碰撞,但我不知道如何找到两个球体之间的碰撞/斥力角。我试过扭转物体的方向,但没有成功。如果你把我链接到一个有趣的.pdf文件教物理编程,那将是非常好的。
文:youyou Cocos Creator 提供了一套用于检测 3D 物体碰撞的 API,用户可以使用这些 API 做射线检测之类的检测。 射线检测 cc.geomUtils.intersect.raycast(rootNode, ray, handler, filter) // 根据点击的点获取一条由屏幕射向屏幕内的射线 let ray = camera.getRay(touchPos); /