Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 2d游戏物理资源_C#_F#_2d_Physics - Fatal编程技术网

C# 2d游戏物理资源

C# 2d游戏物理资源,c#,f#,2d,physics,C#,F#,2d,Physics,我正在寻找一些学习如何在游戏中建立2d物理模型的好参考资料。我不是在寻找一个图书馆来为我做这件事——我想思考和学习,而不是盲目地使用别人的作品 我在谷歌上搜索了不少,虽然我找到了一些关于GameDev等的教程,但我发现他们的教程很难理解,因为它们要么写得很差,要么假设我对数学的理解水平还不高 具体来说,我在寻找如何模拟一个自上而下的2d游戏,有点像坦克战斗游戏,我想准确地模拟(除其他外)加速度和速度、“组件”的热量累积、模型和关卡边界之间的碰撞以及导弹型武器 网站、推荐书、博客、代码示例——如果

我正在寻找一些学习如何在游戏中建立2d物理模型的好参考资料。我不是在寻找一个图书馆来为我做这件事——我想思考和学习,而不是盲目地使用别人的作品

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

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

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

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


(来源:)


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

物理方法

  • (维基百科文章)
  • (很棒的文章!包括移动、碰撞、关节和其他约束。)
书籍

  • 伊恩·米林顿——我拥有这本书,并极力推荐。这本书从头开始构建C++中的物理引擎。作者从基本粒子物理开始,然后添加“运动定律”、约束、刚体物理等等。他在整个过程中都包含了文档化良好的源代码
物理引擎

  • (开源物理API)
  • (Actionscript物理引擎)
  • (闪存动态引擎)
  • (另一个Flash Actionscript引擎)
  • (商业)
F#有一种称为测量单位的功能,它可以为您进行尺寸分析,如果您弄错了,它会提供误差。例如,如果你说:

let distance : float<meters> = gravity * 3.0<seconds>
let距离:浮动=重力*3.0
这将产生编译错误,因为重力是而不是。此外,由于F#只是.NET,您可以在类库中编写数学/物理代码,并从C#中引用这些代码

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


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

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

原始答复:

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

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

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

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

已经发表了两篇关于这方面的文章:

  • (2008年6月15日)

  • (2010年1月15日)


根据经验,实现2D物理引擎相当困难。我将详细介绍创建引擎时所采取的几个步骤

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

  • 运动学/动力学。Chris Hecker写了一篇优秀的文章,让我一步一步地了解碰撞反应

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


  • 玩得开心!创建自己的物理模拟是一个非常有益的经历

    如果你想准确地做这件事,想自己做,但不懂其中涉及的数学,那么没有人能为你做太多。首先,你需要了解你试图建模的内容,然后才能尝试建模。这就是为什么我要求提供这方面的资源=帕。。。对不起,我想我当时误解了这个问题,我以为你是在问如何做的代码示例。。。无论如何,正如我记得的,我们在11年级的物理课上讨论过这类东西,也许拿起一两本教科书可能是一个好的开始