martes, 24 de julio de 2012

ChipMunk - Librería de física 2D - Videojuegos para Iphone - Conceptos básicos (Parte 2)

Ahora que tenemos configurado nuestro proyecto y esta listo para comenzar, podemos empezar a estudiar Chipmunk. Para eso necesitamos conocer la terminología básica de Chipmunk y saber como esta organizado.

Para simular un mundo con física necesitamos establecer ciertas reglas como por ej la gravedad para nuestro nuevo "Universo", también necesitamos crear un contenedor para todos nuestros objetos, en Chipmunk a esto se lo denomina espacio (space).
Para definir cualquier objeto es necesario establecer cual es su masa y otras propiedades del mismo. Esto se hace con lo que Chipmunk llama cuerpo (body).
Un cuerpo no produce colisiones por si mismo porque no tiene "forma" (shape) cuando interactua con otros objetos. Algunos objetos no son homogeneos, a veces se necesitan definir diferentes parametros para diferentes partes de un objeto (por ej un helado tiene dos partes, una más blanda que la otra).

Para definir que áreas de un cuerpo interactuan con el resto del mundo y las diferentes superficies, se necesitan agregar una o mas formas (shapes) a un body. En Chipmunk hay tres tipos de formas disponibles: circulo, segmento y polígono. Combinando estos tres tipos de formas se definen casi todos los tipos de área de interacción imaginables para nuestros cuerpos. Obviamente que las formas agregadas al mismo cuerpo no producen colisiones  entre ellos.
No siempre es mejor completar el cuerpo con formas para que se unan con los sprites, agregar muchas formas incrementa  el número de cálculos que Chipmunk necesita para cada frame, es mejor simplificar las fomas de manera que cubran las partes importantes.

Podemos cambiar cosas como la velocidad o la posición del cuerpo pero no es recomendado. El método principal para  hacer esto es, como en el mundo real, es aplicar fuerzas. Una fuerza es un vector. Para trabajar con vectores Chipmunk tiene una libreria llamada cpVect que permita hacer las operaciones más comunes como multiplicar y proyectar 2 vectores.
Chipmunk también soporta Joints que nos permiten conectar 2 cuerpos mediante diferentes puntos.