Buenas,
Estoy haciendo unas pruebas con colisiones, bounces (rebotes) con objetos y detectar salida de la room.
El caso es que las colisiones me las detecta bien, no es m?s que poner el evento "Colisi?n con".
El problema es que tengo la funci?n "move_contact_solid(direction, speed)" en el evento colisi?n para que siga en esa direcci?n y velocidad para que haga contacto con el s?lido, perocreo que no me la est? haciendo.
Y el segundo problema es que tengo en el "evento step" del cuadradito (mi personaje principal de 32x32) un IF que viene a ser:
if (y < (0 - sprite_height)) // Si la posici?n Y es menor de -32.
// Si se ha salido completamente de la room
{
instance.destroy();
instance_create(300,500,objCuadrado);
}
Como podr?is ver en el exe:
* Problema 1: No llega a tocar las paredes laterales.
* Problema 2: No siempre respeta el IF, a veces desaparece antes de llegar arriba del todo (aunque cuando falla siempre es casi arriba del todo).
Gracias a tod@s, un saludo,
- Herni
Arregl? el ?cono del mensaje.
Cita de: Wadk en Julio 17, 2010, 10:35:23 PM
Arregl? el ?cono del mensaje.
Hecho...
A ver si con este detalle, recibo alguna sugerencia para arreglar el problemilla XD
Un saludo,
- Herni
Yo no veo que no llegue a tocar las paredes, para mi lo hace bien.
El problema con el if es que cambia el sprite_height al modificarse el aspecto del sprite usando variables (como image_xscale), supongo. Intent? con sprite_get_height(sprite_index) que verifica la imagen del sprite tal como fue colocada en memoria por primera vez y no toma en cuenta las propiedades del objeto.
Aunque tambi?n podr?as poner un instance_destroy en el evento Outside Room... ser?a m?s f?cil.
Cita de: Wadk en Julio 18, 2010, 04:16:42 AM
El problema con el if es que cambia el sprite_height al modificarse el aspecto del sprite usando variables (como image_xscale), supongo. Intent? con sprite_get_height(sprite_index) que verifica la imagen del sprite tal como fue colocada en memoria por primera vez y no toma en cuenta las propiedades del objeto.
Aunque tambi?n podr?as poner un instance_destroy en el evento Outside Room... ser?a m?s f?cil.
Buenas de nuevo Wadk,
Ya hab?a probado el Outside Room, pero por tener el eje del Sprite en el (16)(16), desaparec?a cuando estaba s?lo la mitad fuera.
He trasteado y he visto que s?lo fallaba cuando el cuadrado iba a salir de la room en direcci?n entre 90? y 180? (vamos... yendo a la izquierda)
Mi funci?n de controlar la salida de la pantalla era:
if (y < (0 - sprite_height)) // Si la posici?n Y es menor de -32, se ha salido completamente de la room
El caso es que yo rotaba el cuadro y lo reflejaba con la variable
"image_yscale = -1" que sorprend?ntemente hac?a que la altura del sprite pasase a ser -32 pixeles XD
Entonces lo que he hecho ha sido rehacer el check del if para que tome el valor absoluto de la altura:
if (y < (0 - abs(sprite_height))) // Si la posici?n Y es menor de -32, se ha salido completamente de la room
Cita de: Wadk en Julio 18, 2010, 04:16:42 AM
Yo no veo que no llegue a tocar las paredes, para mi lo hace bien.
Entonces el problema del bounce ser? entonces cosa de mis ojos, que no refrescan tan r?pido como el monitor y no veo la colisi?n forzada que hago con el
"move_contact_solid()" XD
Gracias por las alternativas, un saludo,
- Herni