viernes, 5 de marzo de 2010

IPhone Box2D Tutorial Part I: Setting Up Box2D in an IPhone XCode project

Hace un tiempo que por cuestiones de trabajo tuve que aprender a manejar este motor de simulación en un IPhone y no encontré ningún tutorial. Así que aquí aporto mi granito de arena.

Empecemos por describir el motor de físicas Box2d. Es un motor de físicas de cuerpos rígidos en 2D, escrito en C++. Por lo que es fácil incluirlo en un proyecto IPhone. Esto es lo primero que vamos a hacer. Necesitaremos el código fuente del motor, podemos descargarlo desde Google Code. Una vez descomprimido el zip hay muchas carpetas, de las que sólo nos interesan Include y Source.

Creamos un nuevo proyecto en XCode que llamaremos MyFirstBox2D, y utilizamos el template "View based application". Una vez creado, usando el Finder o Terminal copiamos la carpeta de Box2D al directorio raíz de nuestro proyecto y para enlazarlo al proyecto haremos click con el botón derecho (Ctrl + click para ratones de un sólo botón) sobre MyFirstBox2D que se encuentra en Groups & Files y elegimos Add -> Existing Files... buscamos ahora la carpeta Box2D que recientemente hemos copiado al directorio de nuestro proyecto y la añadimos. Si no lo hicimos antes, borramos todo lo que hay en la carpeta Box2D excepto las carpetas Include y Source. Dentro de la carpeta Source, también borramos el archivo Makefile.

Vamos a compilar el proyecto con el código de Box2D incluído por primera vez, para ello hay que configurar los Code Signing Identity en las propiedades del proyecto y el App Id en las propiedades del target, seleccionamos Device - 2.2.1 (o superior) y Debug en el desplegable superior izquierdo y damos a Build.

Aparecerá un montón de errores de compilación, abrimos Build Results y podemos ver el error  
error: 'finite' was not delcared in this scope 
varias veces repetido. Abrir Project -> Edit Project Settings -> Build, buscar Other C Flags y añadir -DTARGET_OS_IPHONE

Reintentamos la compilación y aparentemente parece que todo va bien, pero aún no hemos terminado. Vamos a incluir el archivo de cabecera "Box2D.h" en nuestro "MyFirstBox2DViewController.h" y compilamos. Inmediatamente aparecen errores con esta pinta:
error: initializer element is not constant
Seleccionamos TODOS nuestros archivos de implementación (.m) y  hacemos click en el icono info de la barra de herramientas, vamos a la pestaña general y en el desplegable File Type seleccionamos sourcecode.cpp.objcpp Hecho esto compilamos el proyecto y ahora ya sí tenemos configurado nuestro proyecto para usar Box2D. Sólo queda tener en cuenta repetir este último paso para todos los archivos de implementación que vayamos a añadir al proyecto.

No hay comentarios:

Publicar un comentario