问题标签 [collision]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
427 浏览

c# - 碰撞检测弹跳问题c#

所以我让我的碰撞检测工作,但由于某种原因,玩家似乎进入地面 1 帧,然后在下一帧跳出它,然后按预期跌落。

我用于碰撞检测的代码

0 投票
2 回答
492 浏览

hash - uris 的高效哈希函数

我正在寻找一个哈希函数来为字符串构建一个(全局)固定大小的 id,其中大多数是 URI。

它应该是:

  • 快速地
  • 碰撞几率低
  • ~ 64 位
  • 如果可能的话,利用uri的结构?

http://murmurhash.googlepages.com/会是一个不错的选择还是有什么更适合的?

0 投票
1 回答
487 浏览

flash - Flash Actionscript + 在碰撞时获取 x 和 y 坐标

我正在运行 HitTestPoint 来检测我的两个 mc 何时发生碰撞,但我不希望它们能够直接通过对方。有人建议我在发生碰撞时找到移动物体的 x,y 坐标,然后在每次发生碰撞时将该 mc 的坐标更新为此 x,y。我一直在谷歌搜索,但结果是空的。下面是我的代码和我尝试过的

}

0 投票
1 回答
2078 浏览

flash - 如何在 Actionscript 3 中获取我正在碰撞的对象?

有没有办法知道一个对象正在与哪个对象发生碰撞?...我想在 Flash 中创建一个“盒子对象”,它可以识别与它碰撞的任何其他对象(电影剪辑)。例如,如果我将盒子放在“场”(引擎或世界)上,然后我在里面放了任何东西,我希望盒子告诉我它正在与什么样的物体发生碰撞。我不能使用 hitTestObject 因为我不知道盒子会提前碰撞到哪个对象。

我想要实现的粗略伪代码如下:

上例中的 UNKNOWN_OBJECT 不一定具有相同的数据类型。

0 投票
1 回答
1425 浏览

c++ - Box2D 碰撞检测失败

我最近开始将 Box2D 2.1 版与 Allegro5 结合使用。目前,我用一个地面和 4 个盒子构建了一个测试。3 个箱子堆叠在一起,另一个被砸碎,导致它们翻转。在这个演示过程中,我注意到有两个故障。

一个是在 Box2D“SetAsBox(width, height)”中创建一个盒子,只给出使用 allegro 绘制到屏幕上的普通盒子的一半大小。示例:在 Box2D 中,我创建了一个大小为 (15, 15) 的框。当我开始使用 allegro 绘制形状时,我必须在 y 上偏移 -15,并将形状缩放两倍。

另一个问题是在碰撞检测期间,我的盒子因撞击而旋转。大多数方格都撞到地面,但其中一些方格与地面的高度有偏差,使其漂浮。

这是制作我的盒子的代码:

编辑:感谢 Chris Burt-Brown 向我解释第一个问题,至于第二个问题,这是个好主意,但没有解决。我尝试了您向我展示的两种舍入方法。

编辑:我想我找到了第二个问题的答案。事实证明,Allegro 的坐标系与 OpenGL 不同。结果,我不得不做 +gravity 而不是做 -gravity,这导致 Box2D 变得不稳定并且行为怪异。

编辑:我的错,我认为这是问题所在,但事实证明它并没有改变任何事情。

0 投票
1 回答
2339 浏览

flash - Box2d As3 接触监听问题

我遇到了 box2d as3 b2ContactListener 类的问题。我有一个名为 ContactListener 的类,它扩展了 b2ContactListener 并覆盖了 PostSolve 方法。PostSolve 采用 2 个参数,contact 保存有关 2 个有联系的对象的信息,以及 impulsion 保存有关联系的信息。我使用脉冲参数来决定 2 个物体的撞击强度,然后我相应地施加伤害。

问题是:如果我做任何圆形的东西,让它在我作为地面的静止物体上慢慢滚动,然后将一个相当大的物体放在地面上的任何地方,圆形在运动时会接触到重复只是滚动的冲动太大了。它会导致滚动的圆形物体在不应该的时候破裂。

几乎就像是震动了静止的身体,对数百米外的物体造成了巨大的伤害,但它只作用于圆圈。

任何人都可以说明情况吗?这是一个已知的问题?解决方法?

我正在使用 Box2DAs3 2.1a 版。

更新:一旦身体进入这种施加大量伤害的怪异状态,任何接触到它的圆圈都会产生大量的大脉冲。一旦非圆形的东西与身体接触,它就不再有问题了。此外,这个问题不仅存在于静态对象上,还存在于动态和运动学上。

更新:我进一步缩小了问题的范围。当一个大物体的平坦边缘撞击我的地面物体时,接触听众会吓坏并施加质量脉冲。任何醒着并接触地面的对象,不仅仅是圆圈,都会得到大量的 PostSolve 方法调用。我尝试将一个大小为 11 像素 x 11 像素的盒子放到地上,同时一个圆圈在地上滚动。该错误没有发生。但是,如果框是 12 x 12,则确实会发生错误。此外,如果我将大小为 12 的框旋转 12 到 0.1 度,则不会发生错误。需要有足够大的接触区域才能复制。盒子的密度也不会影响任何事情。此外,如果该框是一个宽度为 10 且高度为 100 的矩形,并且该错误将重现。这几乎就像是对象的大小导致了这个错误,

更新:这是我制作的 Box2D 论坛帖子的链接,其中包含带有源代码的示例 swf。

关联

0 投票
1 回答
817 浏览

actionscript-3 - AS3 + papervision3d + jiglib 的碰撞盒

我正在尝试重新创建下面网站上解释的“教程”。这是 5 个骰子在现场弹跳。但我一开始就被困住了:)

papervision3d-jiglib-骰子演示

我的问题是边界框。我想根据舞台的大小创建一个有地板和 4 面墙的盒子。我可以使用相机上的变焦/对焦来获得合适的尺寸。但问题是骰子会通过它。

我如何建造 4 面墙并确保当我对其施力时骰子不会穿过它?

我在以下来源中尝试了解决方案,但不知何故,骰子不断通过:(

用jiglib-physics-engine-and-away3d掷骰子

有人知道该怎么做吗?还是让骰子留在屏幕上的更好方法?

0 投票
2 回答
889 浏览

md5 - MD5 将 4 字节和 8 字节密钥散列成 16 字节值;发生碰撞的可能性有多大?

我有 2 32 个4 字节的密钥,我正在散列;碰撞的可能性有多大?

如果我有 2 64 个8 字节的密钥(不是真正存储每个密钥,但我想知道最坏的情况)怎么办?

0 投票
3 回答
35495 浏览

data-structures - 用于二维碰撞检测的四叉树

我正在尝试使用四叉树进行 2D 碰撞检测,但我对如何实现它有点困惑。首先,我有一个四叉树,它包含四个子树(一个代表每个象限),以及一组不适合单个子树的对象。

当在树中检查对象的碰撞时,我会做这样的事情(感谢QuadTree 的 2D 碰撞检测):

  1. 检查对象是否与当前节点中的任何对象发生冲突。
  2. 对于空间与对象重叠的任何子树,递归。

要查找四叉树中的所有碰撞:

  1. 检查当前节点中的每个对象与当前节点中的其他对象。
  2. 针对每个子树检查当前节点中的每个对象。

插入四叉树:

  1. 如果对象适合多个子树,则将其添加到当前节点,然后返回。
  2. 否则,递归到包含它的任何子树。

更新四叉树:

  1. 递归到每个子树。
  2. 如果当前节点中的任何元素不再完全适合当前树,则将其移至父节点。
  3. 如果当前节点中的任何元素适合子树,则将其插入子树。

这可以吗?可以改进吗?

0 投票
3 回答
1707 浏览

java - 二维球碰撞问题:能量不守恒

我正在尝试编写一个简单的物理模拟,其中具有不同半径和质量的球在完全弹性和无摩擦的环境中反弹。我在此资源之后编写了自己的代码:http ://www.vobarian.com/collisions/2dcollisions2.pdf ,我还从这里测试了代码:Ball to Ball Collision - Detection and Handling

问题已编辑

在 Rick Goldstein 和 Ralph 的帮助下,我的代码可以正常工作了(有一个错字……)。非常感谢你的帮助。但是,我仍然对为什么其他算法对我不起作用感到困惑。球以正确的方向反弹,但系统的总能量永远不会守恒。速度越来越快,直到球开始在屏幕上的静态位置闪烁。我实际上想在我的程序中使用这段代码,因为它比我写的要简洁得多。

这是我编写的函数算法(尽管我确实从其他来源获取了第一部分)。它在 Bubble 类中:

这是一个不起作用的

如果你发现什么,请告诉我。谢谢