DarkBASIC - Ayuda con collision

 
Vista:

Ayuda con collision

Publicado por CcPirat (2 intervenciones) el 07/06/2006 02:52:03
Hola soy principiante con el darkbasic profesional, no se que version es exactamente; bueno en fin estoy tratando de hacer que dos objetos que cree en el 3d stuio max y que luego converti a .X se choquen, pero no lo logro, siempre pasa un objeto por ensima del otro y no se que haer; he tratado con el automatic object collision, object collision; y no se que hacer: ayuda por favor; todo esta convertido a .X hasta el mundo en que lo estoy moviendo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con collision

Publicado por Jhon Pro (2 intervenciones) el 26/10/2006 19:44:47
Que Tal. Lo que pasa es que la collision la tienes que programar desde cero, las funciones que mencionas solo te ayudan a detectar si dos o mas objetos dentro del mundo 3d se están sobre poniendo.

Como ejemplo te pongo que una colisión muy sencilla sería algo como (esto es solo un ejemplo en pseudo código):

' Si detecta colision con pared, le obligas al jugador que su posición sea la anterior y que no siga avanzando, esto solo aplica para colison estatica

jugadorX#=object position x(jugador)
jugadorY#object position y(jugador)
jugadorZ#object position z(jugador)

if object collision(jugador,pared)=1
position object jugador, jugadorX#, jugadorY#, jugadorZ#
endif

' Si quieres una colision de deslizamiento seria algo mas o menos así

jugadorX# = object position x(jugador)
jugadorY# = object position y(jugador)
jugadorZ# = object position z(jugador)

if object collision(jugador,pared)=1
if object position x(jugador) <= object position x(pared) then position object jugador, jugadorX# -1, jugadorY#, jugadorZ#
if object position x(jugador) >= object position x(pared) then position object jugador, jugadorX# +1, jugadorY#, jugadorZ#
if object position y(jugador) <= object position x(pared) then position object jugador, jugadorX# , jugadorY# -1, jugadorZ#
if object position y(jugador) >= object position x(pared) then position object jugador, jugadorX# , jugadorY# +1, jugadorZ#
if object position z(jugador) <= object position x(pared) then position object jugador, jugadorX# , jugadorY# -1, jugadorZ#
if object position z(jugador) >= object position x(pared) then position object jugador, jugadorX# , jugadorY# +1, jugadorZ#
endif

Te reitero que esto es un pseudo codigo pero que tal vez te pueda servir, la verdad es que el codigo seria un poco mas complicado pues depende de tus necesidades de colisión, numero de objetos, etc. en donde tendrias que meter los comandos de interseccion y vectores....

Lo que te recomiendo es que pruebes dll o herramientas ya hechas para este proposito, ej Newton, Havok, etc. las cuales puedes implementar y que son de mucha utilidad pero ahí si requeririas un poco de mas conocimiento en DBPro y C++ para poder complementarlas.

Entra a la pagina de DBPro, ahi seguramente encontraras ejemplos de como hacer esto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con collision

Publicado por nelson (1 intervención) el 08/04/2007 17:46:28
como haria en seudo codigo y diagrama de flujo hacer una taza de te y tambien un palindromo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar