代码之家  ›  专栏  ›  技术社区  ›  ohho

登月者游戏需要什么数学?

  •  12
  • ohho  · 技术社区  · 14 年前

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

    6 回复  |  直到 13 年前
        1
  •  9
  •   duffymo    14 年前

    你需要这样的东西:

    1. 二维牛顿运动定律。
    2. 改变重力影响的能力。9.8 m/s^2是地球上正确的加速度,但你应该能够将其更改为火星、月球、木星等的适当值。
    3. 关闭和打开推进器以抵消重力影响的能力。如果你不这样做,那就不是一个很有趣的游戏,因为每一个游戏都以崩溃告终。
    4. 推力器火灾持续时间与燃料消耗之间的关系。如果你没有管理好燃料,你就会崩溃。

    您将从初始条件开始,并在多个时间步上循环。在每一步结束时,你将检查位置和速度。如果地面上的y位置为零或负,你就着陆了。如果速度大于一个临界y值,你将有一个崩溃;低于临界值意味着安全软着陆。

    你要用数值方法解牛顿的运动方程。在你的例子中,它是四个耦合的一阶常微分方程:x和y方向的速度变化率和x和y方向的位置变化率。如果你有推进器的话,你会加上另一个燃料质量守恒方程。

    如果假设没有x分量,就可以消除两个方程:月球着陆器垂直于表面移动,推力器力在垂直方向上只有一个非零分量。如果这是真的,你可以归结为三个方程。

    你要做时间步进,所以阅读积分技术,比如显式欧拉或隐式五阶龙格库塔,会很好。

    一个具有挑战性的问题-不是小事。祝你好运。

        2
  •  6
  •   Carl Norum    14 年前

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

        3
  •  4
  •   Community CDub    8 年前

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

    alt text

    http://en.wikipedia.org/wiki/Trajectory . 你甚至可以简化它。如果你不想超精确的话,你可以这样做 F=ma 哪里是你决定的重力加速度(地球上是9.8米/秒)。

        4
  •  1
  •   Uri    14 年前

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

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

    如果你的游戏是3D的,你的船除了底部推进器外还有侧推进器,那么你不仅有位置上的运动,还有旋转。这和刚体物理学有关。一个涉及大学微积分的问题。

        5
  •  1
  •   comingstorm    14 年前

    这可能有点过分,但我建议 数值分析方法库 --阅读常微分方程一章。你甚至不需要学习整个章节;只是前几个部分。

        6
  •  0
  •   supercat    14 年前

    在二维空间中,每次你想把船的旋转推力加到它的旋转速度上,把它的旋转速度加到它的当前航向上,通过把它的航向的正弦和余弦乘以它的主推进器输出来计算推力矢量,将该矢量和重力矢量(某个量级的直线向下矢量)加到它的流速上,再把它的流速加到它的位置上。如果计时器的滴答声足够小,除了检查飞船是否与地面接触之外,你所要做的就差不多了。尝试你的推力和重力值的大小,直到你有一个可玩的游戏。