代码之家  ›  专栏  ›  技术社区  ›  Erik Forbes

2d游戏物理资源[已关闭]

  •  42
  • Erik Forbes  · 技术社区  · 16 年前

    寻找一个图书馆为我做这件事-我想思考和学习,而不是盲目地使用别人的作品。

    我在谷歌上搜索了不少,虽然我找到了一些关于GameDev等的教程,但我发现他们的教程很难理解,因为它们要么写得很差,要么假设我对数学的理解水平还不高。

    具体来说,我在寻找如何模拟一个自上而下的2d游戏,有点像坦克战斗游戏,我想准确地模拟(除其他外)加速度和速度、“组件”的热量累积、模型和关卡边界之间的碰撞以及导弹型武器。

    网站、推荐书、博客、代码示例——如果它们有助于理解的话,欢迎使用。我正在考虑使用C#和F#来构建我的游戏,所以用这两种语言中的任何一种编写代码示例都很好——但不要让语言阻止你发布一个好的链接。=)

    编辑 :我不是说我不懂数学——更重要的是,我不知道我需要知道什么才能理解所涉及的系统,也不知道如何找到可以让我理解的资源。

    8 回复  |  直到 16 年前
        1
  •  21
  •   Community CDub    7 年前

    以下是我几年前收集的一些资源。值得注意的是Verlet集成。 我还包括一些链接到一些开源和商业物理引擎,我发现在那个时候。这里有一篇关于此主题的stackoverflow文章: 2d game physics?

    物理引擎

        2
  •  8
  •   Community CDub    4 年前
        3
  •  7
  •   epaik    14 年前

    1. 碰撞检测。碰撞检测可能是一个困难的问题,即使您没有处理3D世界或网络模拟。对于2D物理,您肯定希望使用 Separating Axis Theorem . 一旦您实现了SAT,您就完成了引擎的动力学部分的一半。

    2. online resource 这让我一步一步地经历了碰撞反应。

    3. 其他一切。一旦完成了碰撞检测/响应,就需要在引擎中实现您想要的所有其他功能。这可能包括摩擦力、接触力、关节以及任何你能想到的东西。

    玩得高兴创建自己的物理模拟是一个非常有益的经历。

        4
  •  3
  •   angelo    16 年前

    这是一个很好的教程,演示了使用flash的2D物理概念,并不是特定于flash的。 http://www.rodedev.com/tutorials/gamephysics/game_physics.swf

        5
  •  3
  •   James    13 年前

    即使你想自下而上地学习,一个编码良好并有文档记录的开源物理库所包含的信息也远远超过一本书。我如何处理情况x。。。“在文件中查找”可以比纸张索引更快。

    原始答复:

    什么,不提 Box2D ? 这是一个暴雪员工的开源项目,有一个很好的社区,而且效果很好。

    在我使用Box2D的(简短)经验中,我将其与Torque Game Builder集成,我发现API使用起来很干净,文档清晰,它支持我期望的所有物理对象(尤其是关节是一项要求),社区看起来友好且活跃(大约在2010年初)。

    从论坛海报上看,管理者似乎也乐于接受源代码贡献(不带许可行李)。

    它的基于岛屿的解算器看起来相当快,正如我从它的声誉中所期望的,而不是我做了任何主要的性能测试。

        6
  •  2
  •   Chris Smith    16 年前

    F#有一个功能叫做 计量单位

    let distance : float<meters> = gravity * 3.0<seconds>
    

    这将产生编译错误,因为重力是<米/秒^2>而不是<仪表>。此外,由于F#只是.NET,您可以在类库中编写数学/物理代码,并从C#中引用这些代码。

    我建议您查看这些博客帖子以了解更多信息:

        7
  •  1
  •   DavidG    16 年前

    This is a great resource 用于编写第一个引擎。它是3D的,但很容易转换成2D。我知道至少有一家大公司在其内部引擎方面遵循了本教程,我个人也在我自己的引擎方面遵循了他的步骤。他解释了spring/impulse-based physics中的所有基本物理概念,并向您展示了如何编写自己的积分器。

        8
  •  0
  •   J D    15 年前