【问题标题】:Simple collision detection简单的碰撞检测
【发布时间】:2011-12-15 14:06:38
【问题描述】:

我想写一个平台游戏,我之前所做的都是不需要物理的益智游戏。
我所需要的只是简单的碰撞检测,我将提供给物理引擎的是所有对象的位置,它应该输出:

  1. 与任何对象(以及什么对象)发生碰撞的特定对象类型(子弹)的所有对象,只是一个对列表。
  2. 对于特定对象类型(玩家和 npc)的每个对象,无论是在地面还是在半空中。

所有移动/速度/重力/命中/反射的模拟都将使用自定义代码完成,因为我想要实现的是一个具有奇怪物理特性的世界。
我应该滚动自己的引擎吗?我可以使用现有的花栗鼠/box2d吗?如果我需要自己实现,我将如何使碰撞检测不是一项昂贵的操作? (就像只检查 O(n^2) 中的所有内容的幼稚实现。
我可以使用objective-c或c++,我更喜欢c++(它应该有更好的性能)。

【问题讨论】:

标签: c++ objective-c collision-detection


【解决方案1】:

如果您正在编写自己的物理学,您可能希望包含自己的碰撞检测。还有一些公开可用的免费物理引擎,您可以像子弹一样尝试。 (http://www.bulletphysics.org)

但您可能只想在 Google 上搜索碰撞检测算法,这些算法可能适用于您正在制作的游戏类型以及需要测试的交叉路口类型。

这是我随机找到的一篇文章:http://www.gamespp.com/algorithms/collisionDetection.html

【讨论】:

    【解决方案2】:

    对于此类问题,我建议您编写自己的库。

    是的,您可以在现有库中找到此类功能,但是您会从编写自己的库中学到更多。

    我建议研究图形和树数据结构。

    【讨论】:

    • 我知道图形和树,但是它们对碰撞检测有何帮助?顶点将是对象,但边将是什么?碰撞?边缘从何而来?
    • (x,y)->(z);对整个事物进行网格化将使“信号”能够在两个对象坐标加入时发送。这还将允许将速度信息与方向信息(速度)相结合,以便您可以进行更高级的碰撞检测、碰撞避免 (AI) 和碰撞效果。
    • 是的,但是可以通过简单的数学来计算尺寸。三角多面体是我上次研究这个的标准;只需剥离这些数学属性即可计算出相交和碰撞信息。
    猜你喜欢
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    相关资源
    最近更新 更多