【问题标题】:What mathematics is needed for a lunar lander game?登月游戏需要什么数学?
【发布时间】:2010-06-25 17:35:26
【问题描述】:

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

【问题讨论】:

  • 真心希望答案能多关注cocos2d是游戏引擎,lunar lander是很多70后都非常了解的真实世界游戏,那就直接链接一些通用的吧物理公式。谢谢!
  • 您的问题的标题和正文都表明您需要有关事物物理方面的指针。如果这不是您要查找的内容,请更新问题以更具体。

标签: iphone cocos2d-iphone physics


【解决方案1】:

你需要这样的东西:

  1. 牛顿的二维运动定律。
  2. 能够改变重力效果。 9.8 m/s^2 是地球上正确的加速度,但您应该能够将其更改为适合火星、月球、木星等的值。
  3. 能够关闭和打开推进器以抵消重力的影响。如果你不这样做,这不是一款非常有趣的游戏,因为每个游戏都以崩溃告终。
  4. 将推进器点火持续时间与燃料消耗相关联的方法。如果你不能很好地管理燃料,你就会崩溃。
  5. 初始条件(例如,高于地表的高度、初始速度、初始燃料等)

您将从初始条件开始并循环多个时间步长。在每一步结束时,您将检查位置和速度。如果表面上方的 y 位置为零或负数,您将着陆。如果速度大于临界 y 值,则会发生碰撞;低于临界值意味着安全、软着陆。

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

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

您将进行时间步进,因此最好阅读显式 Euler 或隐式 5 阶 Runge-Kutta 等集成技术。

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

【讨论】:

  • 月球的重力为1.622m/s^2。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    我假设您不会担心阻力或风,因此根据您的倾斜角度(用户输入),您将实施:

    来源:http://en.wikipedia.org/wiki/Trajectory。您甚至可以简化它。如果您不想超精确,您可以执行类似F=ma 之类的操作,其中是您决定的重力加速度(地球上为 9.8 m/s²)。

    【讨论】:

    • 没有能力发射推进器来抵消这个方程中的重力。这就是固定解决方案的问题:没有上下文,没有解释,无法判断它是否合适。
    • 其实这就是我链接轨迹页面并粘贴功能的原因。您可以使用该功能以任意角度(θ)发射推进器。数学应该非常出色。我错了吗?
    • 没有费心阅读链接 - 没时间。无法判断 theta 是推进器角度还是初始下降角度。看不到任何时间步进功能或关闭或打开推进器。我认为需要一种更数值化的方法——集成多个耦合的 ODE。见下文。
    【解决方案4】:

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

    如果您观察上下运动,那么您的船本质上是一个受到重力(常数取决于您的“月球”)的物体,其引擎发出的力抵消了重力。您可以使用它来确定加速度和速度。使用速度,你可以做你的碰撞结果。左右运动更容易,因为如果你的月亮没有大气层,你只是在施加一个恒定的力。

    如果您想要更真实的东西,您可以根据与地表的距离来修改重力常数,并可以添加大气摩擦力(尽管它实际上并不是我们的月球)。

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

    【讨论】:

    • 但是你确实需要物理数学,我认为牛顿会同意我的观点。 :)
    【解决方案5】:

    这可能有点矫枉过正,但我​​建议查看数值配方——阅读关于常微分方程的章节。你甚至不需要学习整章;只是前几节。

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        猜你喜欢
        • 2023-03-23
        • 1970-01-01
        • 2019-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多