lunes, 23 de febrero de 2009

Farseer Physics Engine, un motor de físicas 2D para XNA

El otro día andaba yo navegando por la web de CodePlex, mirando a ver si había algo que me pudiese interesar en mis proyectos XNA.

Y vaya si lo encontré, Farseer Physics Engine es un motor de físicas 2D gratuito, tiene licencia Microsoft Permissive Licence (Ms-PL), lo que quiere decir que lo puedes usar en tus proyectos sin ningún problema (vamos, creo).

He estado trasteado con él un poco y pinta muy bien, personalmente yo lo voy a usar en mis juegos siempre que pueda, ya que ahorra bastante trabajo en algunas tareas, como las colisiones, rotaciones, las físicas (obvio no?) y los resultados son muy buenos.

interseccion



Con FPE es muy sencillo aplicar las físicas y ponerte a trabajar, solo tienes que seguir cuatro pasos: (haré un tutorial para explicar esto)

  1. Crea un objeto de tipo "Body".

  2. Añade el objeto "Body" creado al simulador.

  3. Empieza la ejecución del juego y aplica las fuerzas necesarias al "Body"

  4. Termina la ejecución.


Yo he creado una pequeña prueba de concepto en la que muestro unas cuantas "pelotas" (llámales pelotas, llámales circulo cutres dibujados con el paint) en pantalla a las que les aplico fuerzas aleatoriamente y por lo tanto van rebotando entre ellas hasta que salen de pantalla, no es mucha cosa pero permite ver lo que se puede hacer con FPE.

fisicas

Más adelante escribiré un post explicando, seguramente empiece un tutorial explicando cómo usar este simulador de físicas, pero mientras tanto puedes descargar el proyecto con mi código si quieres echarle un vistazo.

Descargar proyecto.

Web de Farseer Physics Engine y manual (banderaingles).

6 comentarios:

  1. Aqui he encontrado un tutorial de XNA para guardar y cargar datos en el xbox 360, les dejo el link:

    http://www.ikisoftware.com/2009/02/26/xna-game-studio-como-guardar-y-cargar-saves-en-el-xbox360/

    ResponderEliminar
  2. Este comentario ha sido eliminado por un administrador del blog.

    ResponderEliminar
  3. Hola, tu ejemplo, a pesar de no estar paso a paso, me sirvio mucho jeje, estare esperando un tuto detallado para entenderlo mas de mejor manera :D, xaop

    ResponderEliminar
  4. Hola, me alegro que te haya servido, espero tener algo más de tiempo para hacer un tuto más detallado sobre el tema.
    Un saludo!

    ResponderEliminar
  5. HoLa.

    me ha servido bastante tu ejemplo, ya que el manual de farseer no ayuda mucho jeje. Sin embargo tengo un problema y es cuando dibujo dos objetos al mismo tiempo. Por ejemplo si tengo un personaje todo esta bien, pero al colocarle el piso, empieza a rotar y no empieza en la posicion original.

    Se que tiene algo que ver con la geometria, ya que cuando creo el

    geometria = GeomFactory.Instance.CreatePolygonGeom(demo.simuladorFisicas, cuerpo, verts, -1);

    tengo problemas, pero si en vez de eso uso

    geometria = GeomFactory.Instance.CreatePolygonGeom(cuerpo, verts, -1);

    es decir no le paso el simulador de física no tengo problemas.

    Conseguí en internet lo siguiente, que creo que está relacionado, pero no lo entiendo

    http://farseerphysics.codeplex.com/Thread/View.aspx?ThreadId=56417

    http://farseerphysics.codeplex.com/Thread/View.aspx?ThreadId=63214

    De verdad agradecería una respuesta jeje
    Estoy atorado en eso desde hace 1 semana

    Sin mas que decir me despido
    Gracias

    AdieU

    ResponderEliminar