"Ningún juego dura tanto hasta que te lo terminas como el que te programas tú mismo,
ninguno te absorbe tanto y ninguno te produce tanta satisfacción cuando lo has acabado"
Programacion de videojuegos
Viernes 30 de Julio del 2010

Menu principal
Colaborar (con PayPal)

Para continuar con el trabajo de esta Web y poder pagar el hosting, viene bien la ayuda que sea. Gracias a todos.

Importe: 

Ultimas descargas
JoomlaWatch Stats 1.2.9 by Matej Koval

 Foro de UnSitioWeb :: Sobre el curso de programación de juegos
Bienvenido/a Visitante   
Normas del foro   por Vicengetorix el 04-10-2009 02:30
 Asunto :Colisiones con modelos... 08-03-2010 19:24 
Jesus Romero
Incorporado: 02-03-2010 20:02
Posts: 8
Localización
Buenas tardes.

La verdad, pensaba que el sistema de colisiones estaría tratado en el curso... pero veo que no. Así que me gustaría saber si puedes explicar como hacer para detectar las colisiones entre modelos previamente cargados.

Creo que es un tema importante, sino imprescindible después de realizar todo el curso... jeje. Otros lenguajes específicos como Blitz o Blitz3d tienen sus propias funciones para detectarlas y tratarlas.

Un saludo y muuuuchas gracias.
IP Logged
 Asunto :Respuesta:Colisiones con modelos... 09-03-2010 03:25 
Vicengetorix
Incorporado: 27-12-2008 18:54
Posts: 60
Localización
Efectivamente, no esta tratado. En un futuro pensaba plantear el tema pero creo que hay cosas previas que hacer.
En el caso de otras librerias de juegos o el blitz (no lo conozco bien), incluyen las colisiones lo mismo que otros aspectos del juego que yo me trabajo desde la nada por que mi interes es mas divertirme mientras se aprende que la productividad.

Como anticipo al tema (que conste que no soy el Einstein de los juegos) te comento.
El tema de las colisiones es un tema dificil por ser muy matematico y haber diferentes enfoques. Si te fijas en muchos juegos, veras que los programadores se han limitado a cubrir el expediente y si acercas el muñeco a peredes u otros objetos se superponen en algunas situaciones o chocan estando lejos. En la mayoria de los juegos basta con esto.

En principio, segun cargas un objeto 3d puedes ir quedandote con el punto mas alejado del centro del objeto y con los puntos mas alejados del centro por ejes. Con eso obtienes la esfera en que esta contenido el objeto y la caja en la que esta contenido (bounding box). Con esos datos de cada objeto puedes compararlos y saber si chocan las esferas (el caso mas facil y practico en un juego de billar) o si chocan las cajas (box), este segundo caso mas complicado si decides hacer que las las cajas giren con el objeto que contienen. Si usas una caja mas grande que contiene el objeto incluso girado pero que siempre esta en la misma posicion respecto a los ejes (axis aligned bounding box), el calculo sera mas facil pero el resultado mas grosero.
Hay metodos para todos los gustos que seran eficaces segun el caso como por ejemplo el uso de elipsoides, usado en los shooter en primera persona.
Para hacer las cosas perfectas tendras que comparar triangulo por triangulo los objetos lo que ralentizara sobremanera el programa, aunque hay metodos para mejorarlo como aplicar arboles binarios y cosas asi.
Se pueden usar librerias externas para no complicarte, que las hay y gratis.

En todo caso es un tema complicado y muy abierto con lo que sugiero no complicarse mucho con el al principio. Si estas interesado en cubrir este tema ya, usa mejor una libreria externa. (aqui hay una lista de ellas, y mas cosas: http://www.twilightsembrace.com/personal/gamelibs.php )
IP Logged
Página # 


Powered by ccBoard




Banner
Banner