月球着陆器游戏需要什么数学?

时间:2010-06-25 17:35:26

标签: iphone cocos2d-iphone physics

我想构建一款游戏来学习cocos2dLunar lander是我脑海中的第一个练习。任何指针/源代码/所需的物理计算教程将不胜感激。谢谢!

6 个答案:

答案 0 :(得分:9)

你需要这样的东西:

  1. 牛顿在2D中的运动定律。
  2. 能够改变重力的影响。 9.8 m / s ^ 2是地球上正确的加速度,但你应该能够将其改为火星,月球,木星等的适当值。
  3. 能够关闭和关闭推进器以抵消重力的影响。如果你不这样做,那不是一个非常有趣的游戏,因为每个游戏都以崩溃告终。
  4. 将推进器火灾持续时间与燃料消耗联系起来的方法。如果你不能很好地管理燃料,你就会崩溃。
  5. 初始条件(例如,高于地面的高度,初始速度,初始燃料等)
  6. 您将从初始条件开始并循环执行多个时间步骤。在每个步骤结束时,您将检查位置和速度。如果表面上方的y位置为零或负值,则会降落。如果速度大于临界y值,你就会崩溃;小于临界值意味着安全,软着陆。

    你将以数字方式解决牛顿运动方程。在你的情况下,它是四个耦合的一阶常微分方程:x方向和y方向的速度变化率和x方向和y方向的位置变化率。如果你有推进器,你将添加另一个方程式来保护燃料的质量。

    如果假设没有x分量,则可以消除两个方程:月球着陆器垂直于表面移动,推进力仅在垂直方向上具有非零分量。如果这是真的,那么你可以得到三个方程式。

    你会花时间踩踏,所以读取像显式Euler或隐式5阶Runge-Kutta这样的集成技术会很好。

    一个具有挑战性的问题 - 不是微不足道的。祝你好运。

答案 1 :(得分:6)

月球着陆器游戏所需的数学计算非常简单。 Newton's Laws of Motion是你真正需要的 - 只需拿起一本基本的物理教科书。你应该在第一章之后设置。系统中只有两个力输入 - 来自发动机的重力和推力。只需计算垂直&运动的水平分量,并相应地为你的宇宙飞船制作动画。

答案 2 :(得分:4)

物理非常简单:http://csep10.phys.utk.edu/astr161/lect/history/newtongrav.html

我假设你不会担心拖拽或风,所以根据你的倾向(用户输入),你将会实施:

alt text

来自:http://en.wikipedia.org/wiki/Trajectory。你甚至可以简化它。如果你不想超精确,你可以做F=ma这样的事情,无论你决定重力加速度是什么(地球上9.8 m /s²)。

答案 3 :(得分:1)

如果你的游戏是2D游戏,你不需要太多的数学,你需要物理,特别是基本的牛顿运动。可能是大学或高中的介绍。数学是早期高中微积分的一些小学代数。

如果你看一下上下运动,那么你的船本质上是一个暴露在重力作用下的物体(常数取决于你的“月亮”),它被发动机发出的力所抵消。您可以使用它来确定加速度和速度。使用速度,你可以做你的碰撞结果。左右运动更容易,因为如果你的月亮没有大气,你只是施加恒定的力量。

如果你想要更逼真的东西,你可以根据与表面的距离来修改重力常数,并且可以添加大气摩擦力(虽然它不会真的是我们的月亮)。

如果您的游戏是3D游戏,并且您的游艇除了底部推进器之外还有侧推器,那么您不仅可以在位置上移动,还可以在旋转中移动。这与刚体物理学有关。涉及大学水平微积分的AFAIK。

答案 4 :(得分:1)

这可能有些过分,但我建议查看 Numerical Recipes - 阅读有关常微分方程的章节。你甚至不需要研究整章;只是前几节。

答案 5 :(得分:0)

在二维中,每当你想要将船的旋转推力加到其旋转速度上时,将其旋转速度加到其当前航向上,通过将其航向的正弦和余弦乘以其主推进器来计算推力矢量输出,将该矢量和一个重力矢量(一个幅度的直向下矢量)添加到其当前速度,并将其当前速度添加到其位置。如果计时器滴答足够小,除了检查飞船是否与地面接触外,这几乎是你所要做的。尝试你的推力和重力值的大小,直到你有一个可玩的游戏。