Control de usuario
Patrocinadores
Estadísticas
Miembros:
334.643
Online:
1.403
Hilos:
1.380.709
Mensajes:
24.884.917
Stats

Índice de foros Otras Consolas Desarrollo

Problema con colisiones

Dedicado al desarrollo de software casero para videoconsolas

Moderador: jiXo

Dadrimoon
Avatar de usuario
MegaAdicto!!!
 
Mensajes: 929
Registrado: 09 Ago 2005
Ubicación: Alicante
Fotos: 5

Problema con colisiones

Mensajepor Dadrimoon 29 Dic 2011 12:40

Hola!

Es la primera vez que escribo por aquí, así que voy a intentar explicarme lo mejor que pueda xD

Estoy haciendo un pequeño motor en as3 para un juegecillo y se me plantea la siguiente duda. En todos los sitios que hablan de colisiones he visto mil métodos para detectarlas y todas funcionan. He probado varias y todas funcionan bien, pero ahora tengo un problema que no se resolver.

Un ejemplo sencillo, un objeto empieza a moverse hacia abajo a 3 frames por segundo

http://imageshack.us/photo/my-images/208/dibujojyz.png/

Si la zona azul es donde debe colisionar y pararse, y en el frame entrante al calcular la colision no se produce el objeto continua... no se me ocurre nada para solucionarlo.

Obviamente el movimiento lo realiza en funcion del tiempo, si lo realizo en funcion de los frames el problema lo solucionaria pero cada vez que petardeara se quedaria congelado el juego... existe alguna solución?

Salu2 y Gracias

kbks
Avatar de usuario
MegaAdicto!!!
 
Mensajes: 2078
Registrado: 19 Nov 2005
Ubicación: Ugao

Mensajepor kbks 29 Dic 2011 15:46

Es un problema clásico. Soluciones hay muchas y debes elegir la que mejor te venga a tí. La solución genérica sería utilizar los vectores de movimiento para los dos objetos junto a sus cajas de colisión, pero el cálculo se complica bastante.
ATHLETIC KARAJO!

Dadrimoon
Avatar de usuario
MegaAdicto!!!
 
Mensajes: 929
Registrado: 09 Ago 2005
Ubicación: Alicante
Fotos: 5

Mensajepor Dadrimoon 29 Dic 2011 19:06

kbks escribió:Es un problema clásico. Soluciones hay muchas y debes elegir la que mejor te venga a tí. La solución genérica sería utilizar los vectores de movimiento para los dos objetos junto a sus cajas de colisión, pero el cálculo se complica bastante.


Bueno, en parte me consuelas porque cuando te tiras semanas programando algo medianamente grande y te salen fallos como este , te sientes un poco gilipollas [carcajad]

La cosa esta en que los otros objetos no se mueven :S he hecho un tile engine y los objetos que detecta en la colision es el propio suelo.

En el pc, hasta que no hay 200 o 300 objetos no petardea, en mi tablet resiste un poco mas , pero hoy lo he probado en un galaxy S de un compañero y con 10 objetos ya empiezan a bajar los frames y a hacer cosas rarisimas... la cara de tonto que se me ha quedado ha sido epica :(

No hay otra solución?

:)

Gracias por contestar

darix
MegaAdicto!!!
 
Mensajes: 3049
Registrado: 01 Feb 2010

Mensajepor darix 01 Ene 2012 13:20

-

Kiskillo
Avatar de usuario
Adicto
 
Mensajes: 244
Registrado: 25 Ago 2005

Mensajepor Kiskillo 09 Mar 2012 18:34

Modifica el algoritmo para detectar la colisión y que detecte si se ha producido también en el camino que ha recorrido.

Es decir si el objeto va desde A hasta B, no solo mira si hay colisión en A y en B si no también en medio.

HexDump
Avatar de usuario
MegaAdicto!!!
 
Mensajes: 660
Registrado: 08 Sep 2002

Mensajepor HexDump 19 Abr 2012 11:16

Normalmente, en la mayoría de juegos no es necesario tener un metodo para detectar las colisiones de forma continua si los colliders en el mundo lógico tienen un tamaño decente y no tienes objetos moviendose a una velocidad endiablada. En muchos casos si existen objetos así suelen ser proyectiles y cuerpos de este tipo. Para solucionar esto lo puedes hacer, por ejemplo en tu caso, extruyendo el volumen de colisión de quien se mueve en la dirección de movimiento y calculando si la hay o no. Esto sería un primer paso, después tendrías que calcular los puntos de contacto para dejar la pieza encima de la azul, pero esto lo podrías hacer facilmente por ejemplo con un simple test separndo los ejes de movimiento.

El tema de las colisiones aunque de primeras parezca algo sencillo, cuando te pones a hacer cosas y a investigar te das cuenta de que es aún hoy día un gran problema, y ya no hablamos del calculo de la respuesta a la colisión.

Un saludo.
Tratos Positivos: Joguan, [UFO],Yugox Tratos Negativos: ...


Volver a Desarrollo

¿Quién está conectado?

Usuarios navegando por este foro: No hay usuarios registrados visitando el foro y 0 invitados