2010-06-25 13 views
12

Me gustaría construir un juego para aprender cocos2d. Lunar lander es el primer ejercicio que viene en mi mente. Se apreciará cualquier puntero/código fuente/tutorial de los cálculos de física requeridos. ¡Gracias!¿Qué matemática se necesita para un juego de aterrizaje lunar?

+0

Realmente espero que las respuestas puedan prestar más atención a 'cocos2d', que es un motor de juego y' lander lunar', que era un juego real bien comprendido por muchos post-70, y luego simplemente enlaza con algunas fórmulas físicas genéricas. ¡Gracias! – ohho

+3

Tanto el título como el cuerpo de su pregunta indican que desea sugerencias sobre el lado físico de las cosas. Si eso no es lo que está buscando, actualice la pregunta para que sea más específica. – NotMe

Respuesta

9

Tendrá cosas como esta:

  1. leyes de Newton del movimiento en 2D.
  2. Posibilidad de cambiar el efecto de la gravedad. 9,8 m/s^2 es la aceleración de la derecha en la tierra, pero usted debería ser capaz de cambiar esta situación en el valor adecuado para Marte, la Luna, Júpiter, etc.
  3. Posibilidad de activar los propulsores de vez en cuando para contrarrestar el efecto de la gravedad . No es un juego muy interesante si no lo haces, porque todos terminan en un choque.
  4. Forma de relacionar la duración del disparo del propulsor con el consumo de combustible. Si no maneja bien el combustible, se bloquea.
  5. condiciones iniciales (por ejemplo, la altura sobre la superficie, velocidad inicial, inicial de combustible, etc.)

Vamos a empezar con las condiciones iniciales y bucle más de un número de pasos de tiempo.Al final de cada paso verificará la posición y la velocidad. Si la posición y sobre la superficie es cero o negativa, habrá aterrizado. Si la velocidad es mayor que un valor crítico de y, tendrá un bloqueo; menos que el valor crítico significa un aterrizaje seguro y suave.

Resolverá numéricamente las ecuaciones de movimiento de Newton. En su caso, se trata de cuatro ecuaciones diferenciales ordinarias de primer orden acopladas: la velocidad de cambio de velocidad en las direcciones x e y la velocidad de cambio de posición en las direcciones x e y. Si tiene los propulsores en su lugar, agregará otra ecuación para la conservación de la masa del combustible.

Puede eliminar dos ecuaciones si supone que no hay componentes x: el módulo de aterrizaje lunar se mueve perpendicularmente a la superficie, la fuerza del propulsor solo tiene un componente distinto de cero en la dirección vertical. Si eso es cierto, tienes tres ecuaciones.

Harás un paso de tiempo, por lo que será bueno leer las técnicas de integración como Euler explícito o Runge-Kutta de quinto orden implícito.

Un problema desafiante, no trivial. Buena suerte.

+0

La gravedad en la luna es 1.622 m/s^2. –

6

La matemática que necesitas para un juego de aterrizaje lunar es bastante sencilla. Newton's Laws of Motion es todo lo que realmente necesita, solo elija un libro de texto básico de física. Deberías configurarlo después del primer capítulo. Solo hay dos entradas de fuerza en el sistema: la gravedad y el empuje de los motores. Simplemente calcule los componentes horizontales & verticales del movimiento y anime su nave espacial en consecuencia.

4

La física es muy simple: http://csep10.phys.utk.edu/astr161/lect/history/newtongrav.html

Asumo que no va a preocuparse por la fricción o el viento, por lo que dependiendo de sus ángulos de inclinación (entrada del usuario), se le ejecución:

alt text

Procedencia desde: http://en.wikipedia.org/wiki/Trajectory. Incluso puedes salirte con la suya simplificándolo. Si no quieres ser súper preciso, puedes hacer algo como F=ma donde está lo que decidas que sea la aceleración gravitacional (9.8 m/s² en la Tierra).

+3

No hay capacidad para disparar propulsores para contrarrestar la gravedad en esta ecuación. Ese es el problema con las soluciones enlatadas: sin contexto, sin explicación, sin forma de decir si es apropiado o no. – duffymo

+0

En realidad, esa es la razón por la que vinculé la página Trayectoria y pegué la función. Usas esa función para disparar propulsores en ángulos arbitrarios (theta). Las matemáticas deberían funcionar bastante maravillosamente. ¿Me equivoco? –

+0

No se molestó en leer el enlace, no hay tiempo. No podía decir si theta era el ángulo del propulsor o el ángulo de descenso inicial. No vea ninguna capacidad de paso de tiempo o apague o encienda los propulsores. Creo que se necesita un enfoque más numérico: integrar múltiples ODE acoplados. Vea abajo. – duffymo

1

Si el juego es en 2D, no necesita mucho de matemáticas, que necesita la física, el movimiento de Newton Específicamente básica. Probablemente la introducción de la universidad o la secundaria tardía. La matemática es algo de álgebra de la escuela primaria con cálculo inicial de la escuela secundaria.

Si miras el movimiento de arriba hacia abajo, entonces tu nave es esencialmente un objeto que está expuesto a una fuerza de gravedad (la constante depende de tu "luna") negada por la fuerza emitida por sus motores. Puedes usar eso para determinar la aceleración y desde allí la velocidad. Usando la velocidad, puedes hacer tu colisión-resultado. El movimiento hacia la izquierda y hacia la derecha es más fácil, ya que si tu luna no tiene atmósfera, simplemente estás aplicando una fuerza constante.

Si quiere algo más realista, puede modificar la constante de gravedad en función de la distancia desde la superficie, y puede agregar una fuerza de fricción atmosférica (aunque en realidad no sería nuestra luna).

Si tu juego es en 3D, y tu nave tiene propulsores laterales además de los propulsores inferiores, entonces no solo tendrás movimiento en la ubicación sino también rotación. Eso tiene que ver con la física rígida del cuerpo. AFAIK que implica cálculo de nivel universitario.

+7

Pero necesitas matemáticas para la física, y creo que Newton estaría de acuerdo conmigo. :) – Robusto

1

Esto puede ser exagerado, pero recomiendo mirar Recetas numéricas - lea el capítulo sobre ecuaciones diferenciales ordinarias. Ni siquiera necesitas estudiar el capítulo completo; solo las primeras dos secciones

0

En dos dimensiones, en cada vez que marque, debe agregar el empuje rotacional del barco a su velocidad de rotación, agregar su velocidad de rotación a su rumbo actual, calcular un vector de empuje multiplicando el seno y el coseno de su rumbo por su principal salida del propulsor, agregue ese vector y un vector de gravedad (un vector descendente directo de alguna magnitud) a su velocidad actual, y agregue su velocidad actual a su posición. Si las marcas del temporizador son lo suficientemente pequeñas, eso es todo lo que tienes que hacer, aparte de verificar si la nave está en contacto con el suelo. Experimenta con la magnitud de tus valores de empuje y gravedad hasta que tengas un juego jugable.

Cuestiones relacionadas