问题标签 [collision-detection]

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 投票
3 回答
987 浏览

collision-detection - 游戏应该只依赖帧率吗?

我想听听你对这个问题的建议......

为简单起见,我将只考虑 x 轴。

对位置 10 的对象进行成像,其宽度也为 10 个单位,每秒向前移动 100 个单位,并且由于低帧,每次更新时它应该移动 80 个单位。

在调用第一次更新后,它的位置现在是 90,并且在位置 120 处还有另一个相同大小的对象。

下一次更新,会将对象移动到位置 170。考虑到我需要实现碰撞检测,计算更新之前或之后的碰撞,没有一个会起作用。

现在来一个简单的问题...

在这种情况下该怎么办?

执行以下操作:

我不喜欢这个解决方案,在这种情况下可能没问题,但是如果你有 x、y、z 和很多移动物体怎么办?

我认为另一个很好的解决方案,但我不确定它是否可靠,是让另一个线程在一个循环中执行所有这些计算。

这个线程就像一个无限循环,在每次迭代中,我都会计算elapsedTime我认为会非常小的值并继续移动并计算碰撞,而渲染线程会慢得多,它会得到当前状态的对象,只是渲染它。

你们怎么看?

0 投票
1 回答
1930 浏览

xna - XNA 碰撞检测

我有一个球在一个立方体内移动,我检测到它何时离开立方体(带有一个边界球和一个边界框)。现在我想检测球从哪一侧出去。然后我可以将球重定向到正确的方向。我怎样才能用球的“世界”矩阵做到这一点?

我应该自己跟踪球的坐标,还是应该从世界矩阵中推断出它们?

0 投票
3 回答
5779 浏览

2d - 用于地形碰撞检测的简单 2d 物理教程

我正在寻找一个教程,它将向我展示如何做简单的 2d 物理,就像这里( http://www.teagames.com/games/tgmotocross/play.php ) 中的那些。我最感兴趣的部分是角色/玩家与地形之间如何进行碰撞检测,以及如何存储/生成地形。
教程的语言无关紧要——我只是对如何做这件事感兴趣。
非常感谢。


编辑:澄清一下,我已经知道如何在两个精灵之间执行碰撞检测,以及足够的物理来编写 2d 游戏 - 我正在专门寻找关于如何实现可以碰撞的平滑地形的教程/示例(我明白可破坏的景观是如何完成的,我认为这会以某种方式相关)。此外,我知道 N 个教程,但它们使用离散的形状,而我对平滑的景观感兴趣。

0 投票
1 回答
1533 浏览

iphone - iphone碰撞检测问题使用花栗鼠

我有 2 个小问题: 花栗鼠碰撞检测:我正在开发一个游戏,我检测球和一些静态多边形形状之间的碰撞。这是有效的,但“部分”,这意味着它适用于大约 5 个游戏场景(例如 1 - 5 级)但在第 6 个场景中失败,然后在第 7 个场景中一切正常等等。基本上,碰撞检测有效,但有时会失败..

我不认为设置空间、身体等有问题。因为在一段时间内一切正常,并且在一系列“正确的场景”之后才发生一次错误。一开始我认为问题是我没有在场景结束后从空间中移除形状和身体,但是在从空间中移除身体和形状后问题仍然存在。

cocos2d:至于 cocos2d,我的印象是加速计激活有时会失败。

有没有人遇到过这些问题?欢迎任何建议,谢谢。

帖子:1 加入时间:2009 年 6 月 24 日星期三下午 2:34

0 投票
28 回答
166614 浏览

algorithm - 圆线段碰撞检测算法?

我有一条从 A 到 B 的线和一个位于 C 的圆,半径为 R。

图片

什么是用于检查线是否与圆相交的好算法?它发生在圆圈边缘的什么坐标上?

0 投票
7 回答
6440 浏览

physics - 两个移动四面体之间的连续碰撞检测

我的问题很简单。我有两个四面体,每个四面体都有一个当前位置、一个空间线速度、一个角速度和一个质心(实际上是旋转中心)。

有了这些数据,我试图找到一种(快速)算法,它可以精确地确定(1)它们是否会在某个时间点发生碰撞,如果是这样,(2)在它们碰撞多长时间后和(3 ) 碰撞点。

大多数人会通过进行三角形-三角形碰撞检测来解决这个问题,但这会在冗余操作上浪费几个 CPU 周期,例如在检查不同的三角形时检查一个四面体的同一边与另一个四面体的同一边。这只是意味着我会稍微优化一下。没什么好担心的。

问题是我不知道任何考虑自旋转的公共 CCD(连续碰撞检测)三角形三角形算法。

因此,我需要一个输入以下数据的算法:

  • 三个三角形的顶点数据
  • 位置和旋转中心/质量
  • 线速度和角速度

并会输出以下内容:

  • 是否有碰撞
  • 碰撞发生多长时间后
  • 碰撞发生在空间的哪个点

在此先感谢您的帮助。

0 投票
4 回答
20937 浏览

collision-detection - 较早的游戏如何对墙壁、地板和天花板进行碰撞检测?

我一直在阅读有关 stackoverflow 和其他网站上游戏中的碰撞检测的信息。他们中的很多人都在谈论 BSP、边界椭圆、积分等。然而,在 NES 上,他们设法在游戏中进行地板和墙壁碰撞检测,我发现很难相信他们做了很多计算来检测墙壁碰撞。

我想我的问题是,给定一个仅由瓷砖组成的关卡,他们如何检测像马里奥和洛克曼这样的处理能力很小的游戏中与墙壁和地板的碰撞?

  • 他们是否遵循运动路径并确定最近的连接瓷砖?(有点搜索)(先验)
  • 他们是否确定了与地板的碰撞,然后找出了调整角色的最佳方法?(后验)这在时间步长可变的情况下是有风险的,如果你足够快,你可以跳过一个瓷砖。虽然我假设 NES 游戏的时间步长与电视的刷新率同步。
  • 当你在地上时,重力是否总是影响你的性格?或者当你决定在瓷砖上行走时,你只是“关掉它”?当你从悬崖边缘走下来的时候呢?否则,您需要某种方法来确定您下方的瓷砖。
  • 如果您与瓷砖相撞,您是否会找到该瓷砖的边缘并将您的角色移动到它的一侧(取决于行进方向)?
  • 像超级银河战士和马里奥这样的倾斜瓷砖怎么样?
  • 那些你可以从底部跳到顶部的“平台”呢?如果你在做“后验”,你将如何处理与这些瓷砖的碰撞?

我已经编写了一些基本上是“先验”的碰撞代码,因为它会搜索您将朝某个方向撞到的第一块瓷砖。我只是想知道是否有更好的方法。(也许只是使用事后碰撞检测)

例如,检查瓷砖碰撞是否向下移动的代码(我检查垂直然后水平移动):

0 投票
2 回答
1741 浏览

actionscript-3 - 您如何使用 Actionscript 3.0 进行“弹跳”碰撞检测?(带视频)

好吧,首先我很惊讶 actionscript 3.0 没有基于像素的碰撞检测。

无论如何,我正在使用在这里找到的碰撞库(如果需要,我愿意选择另一个库)

录制了一段视频以更好地展示我正在尝试做的事情,简而言之,我正在制作一个横向滚动游戏(如马里奥),我希望我的地面(地板)就像地面一样......当用户走路时它在地面上行走,哈哈

起初我在考虑做一个“反弹”效果,比如“如果用户在地面以下 X 量,然后将他推上去”。看起来不错,但我发现我能做到的唯一方法是让我的用户在触地后继续跳跃(不是在视频中)。

那么有谁知道如何获得它,以便当我的用户走路并且他在地面上上山时,它也会让用户 char 也上去?

0 投票
1 回答
6097 浏览

c# - 大量物体的碰撞检测

在给定时间,我在屏幕内有大约数百个移动对象,外加一千多个静止对象。为简单起见,你可以把它想象成一个有很多球的台球游戏 :) 其中一些保持不动,另一些则以各种速度向各种不同的方向移动。每次每个球撞到另一个球时,我都需要进行碰撞检测。考虑到性能以及编程的简单性,最好的方法是什么?我说的只是算法,我想我可以自己实现它,也欢迎提出关于实现的建议;)

语言为 C#、XNA 3.1、2D 图形,目标平台仅为 Windows(如果重要的话)。在此先感谢您的帮助!

0 投票
3 回答
2209 浏览

physics - 将自定义物理课程与 OGRE 3D 集成?

我必须将 OGRE3D 用于大学项目,但是,我们不允许使用任何第三方库进行物理或碰撞检测。这包括使用 OGRE 的内置碰撞检测。

我在将我自己的自定义物理例程添加到 OGRE 的内置实体的正确方法上遇到了一些困难。

OGRE 使用“实体”对象作为最基本的构建块,对于物理,您需要对象具有质量、速度等属性。

我感到困惑的是,OGRE 的渲染/逻辑循环似乎隐藏在 OGRE 引擎内部的用户之外。这是一个问题,因为我需要能够获取 OGRE 中的每个实体,并使用我正在构建的自定义物理引擎执行碰撞检测和物理计算。

如何将我自己的物理/碰撞引擎类与 OGRE 集成?

更新:根据以下建议,我将 OGRE::Entity 子类化,即:

评论指出这不是符合 OO 的最佳方式,我同意但是我在这个阶段看不到更好的方式吗?你有什么想法,你有什么更好的想法,因为我对这样做并不完全满意。