miércoles, 15 de febrero de 2012

Juego planetoides

He estado dándole vueltas al concepto de gravitación en Blender que os puse el otro día y he preparado una demo de juego basada en la gravedad entre planetas.

He anulado la gravedad “por defecto” de Blender (siempre hacia abajo, eje menos Z) y he aplicado fuerzas hacia el centro de los diferentes planetas. Así podremos recorrer pequeños planetas como el Principito y saltar entre ellos. Algo parecido al Mario Galaxy, si lo conocéis. 

De momento tengo los planetas fijos, no interactúan entre ellos, pero será interesante ponerlos en órbita y así será más difícil viajar de uno a otro. Aquí un vídeo:



video





Como podéis comprobar no tengo muy claro qué hacer con la cámara, que es un elemento más importante de lo que parece en los videojuegos. Podría estar fija desde una posición lejana, o fija pero apuntando hacia el personaje (lo que hace ahora), o moverse en un plano aparte del escenario situándose en la normal respecto al personaje... o las típicas vistas en primera o tercera persona... no lo sé. 

Algunas órdenes interesantes del API de Blender que he usado son:
dist = obj.getDistanceTo(planetatemp) para poder detectar el planeta más cercano y así apuntar la base del personaje hacia ahí.

vdirector=planetasuelo.position-obj.position #Obtener el vector director simplemente restando las coordenadas
vdirector.normalize() #Hacer que tenga módulo uno
obj.alignAxisToVect(-vdirector,2,1) #Alinear el personaje al contrario del vector director




Si queréis ejecutarlo hay que abrirlo con Blender 2.6, situar el cursor encima de la vista 3D y presionar P. Se controla con las teclas A,W,D y salta con el espacio. Se puede descargar aquí: Demo Juego Planetoides.