|
|
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
|