我想制作一个用来学习 cocos2d
的游戏,月球着陆器
是我脑海中首先想到的练习项目。如有需要的物理计算指针/源代码/教程,不胜感激。谢谢!
我想制作一个用来学习 cocos2d
的游戏,月球着陆器
是我脑海中首先想到的练习项目。如有需要的物理计算指针/源代码/教程,不胜感激。谢谢!
您将从初始条件开始,并循环多个时间步骤。在每个步骤结束时,您将检查位置和速度。如果y轴位置在表面以上为零或负数,则表示已着陆。如果速度大于关键y值,则会坠毁;小于关键值则表示安全软着陆。
您将通过数值方法解决牛顿运动方程。在您的情况下,它是四个耦合的一阶常微分方程:x和y方向速度的变化率以及x和y方向位置的变化率。如果您安装了推进器,您将添加另一个用于燃料质量守恒的方程。
如果您假设没有x分量,则可以消除两个方程:月球着陆器垂直于表面移动,推进器力只在垂直方向上具有非零分量。如果是这样,您就只剩下三个方程。
您将进行时间步进,因此最好阅读集成技术,例如显式欧拉或隐式5阶龙格-库塔方法。
这是一个具有挑战性的问题 - 不是简单的。祝你好运。
F=ma
的操作,其中是您决定的重力加速度(在地球上为9.8 m/s²)。如果你的游戏是2D的,你不需要太多数学知识,只需要物理学,特别是基本的牛顿运动。可能是大学入门或者高中晚期的数学水平。这里面的数学包括一些小学代数和高中早期的微积分。
如果你看上下运动,那么你的飞船实际上是一个受到重力作用的物体(常数取决于你的“月球”),并且被其引擎所产生的力所抵消。你可以利用这个来确定加速度,并从中计算出速度。使用速度,你可以进行碰撞后的处理。左右运动更加简单,因为如果你的月球没有大气层,你只需施加一个恒定的力。
如果你想要更真实的效果,你可以根据距离地表的远近修改重力常数,并添加大气摩擦力(尽管它实际上不会是我们的月球)。
如果你的游戏是3D的,并且你的飞船除了底部推进器之外还有侧推进器,那么你不仅在位置上会有运动,还会有旋转。这涉及刚体物理学。据我所知,这需要大学水平的微积分。