Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Colisiones, Fisica básica y escaleras

Iniciado por tamat, 13 de Julio de 2011, 10:31:37 PM

« anterior - próximo »

tamat

Estoy tratando de hacer un FPS muuuy básico y me gustaría tener una fisica elemental.

Hasta ahora lo que hacía era crear una caja que envolvía al personaje y para cada movimiento testeaba primero si la caja colisionaba, si lo hacía anulaba el movimiento.

Esto funcionaba perfectamente hasta que decidí ponerle escaleras. Obviamente la caja choca con el primer escalon y el personaje no sube.

Mi primera aproximación fué calcular la envolvente de los puntos que colisionan, y si la máxima Y quedaba por encima de la posicion del player más un umbral, elevar el personaje hasta esa Y, pero la cosa se está empezando a complicar en casos en los que la pared es rugosa, ademas de que la colision de caja con mesh la hago lanzando rayos y en funcion de como salen esos rayos a veces no colisiona o colisionan haciendo que le personaje trepe paredes.

Me preguntaba si no habrá una aproximación a este problema que sea más asequible y simple.

Gracias
Por un stratos menos tenso

blau

A bote pronto y sin ser un experto:

1. ¿Usar un modelo del escenario con menos poligonos para las colisiones? Vamos evitar esas rugosidades que comentabas con un escenario mas simple.

2. Detectar que es una escalera y actuar de manera especial, o tener algun camino predeterminado...

Warchief

#2
1) Tira dos rayos horizontales a la altura de la cadera desde posicion actual a actual+movimiento. Si hay colision, stop en actual.
2) Tira un rayo vertical por pie en la posicion deseada (actual + movimiento)
Con eso deberias poder usar tu aproximacion del umbral.

Cuando tengas eso puedes usar la normal de colision (normal del poligono en el punto de colision del rayo) para cambiar el movimiento, en vez de hacer stop. Esto hace que el personaje deslice evitando el obstaculo. (Me refiero a los rayos horizontales, claro)

Para las paredes rugosas usa un plano si la rugosidad es mas pequenya que el personaje.

tamat

creo que eso puede funcionar, el problema es que no tengo normales de colision porque uso voxeles, pero bueno, probaré lo de tirar rayos 'en L' para el tema de las escaleras, es mejor approach que el que uso ahora.

Gracias!
Por un stratos menos tenso

Warchief

No he trabajado con voxels, pero supongo que se puede hacer una aproximacion de la normal tomando los voxels vecinos del que colisiona o aplicando un LOD mayor sobre el que colisiona, de forma que se pueda construir un plano a partir de 3 puntos.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.