Hola Comunidad Game Maker, tengo un pequeño problema con las colisiones no se si me sabre explicar pero lo intentare:

Estoy intentado crear un juego donde el personaje va en moto, hay otro Sprite por los momentos de una persona que atropella los problemas son los siguientes

Problema numero 1: Tengo una animacion para cuando el peaton es atropellado, pero esta animacion se repite sin parar... me gustaria parara en el ultimo Sprite.

Problema numero 2: Al ser un juego con una vista similar al Excite Bike, la colision entre el peaton y el motoquero solo debe suceder cuando lo toque la moto, pero al ser un Sprite grande al colisionar con el cuerpo del motoquero(Como se ve en la imagen) la animacion de muerte se activa. Me gustaria que la animacion se active solamente cuando toque los pixeles de la moto

De ante mano, muchas gracias.  :'( :'( :'(

Cita de: evansmako123 en Octubre 16, 2015, 09:12:45 PM
Problema numero 1: Tengo una animacion para cuando el peaton es atropellado, pero esta animacion se repite sin parar... me gustaria parara en el ultimo Sprite.
Suponiendo que el sprite se llame spr_atropellado. Una solución sería usar el siguiente  código en STEP

[gml]
if (sprite_index == spr_atropellado) and (image_index >= image_number-1)
     image_speed = 0    // Detener la animación del sprite en la última subimagen, antes que se repita
[/gml]

Otra solución sería agregar un evento ANIMATION END, y ahí escribir:
[gml]
if (sprite_index == spr_atropellado)
     image_speed = 0
[/gml]

Cita de: evansmako123 en Octubre 16, 2015, 09:12:45 PM
Me gustaria que la animacion se active solamente cuando toque los pixeles de la moto
Se necesitaría saber cómo estás manejando esa colisión, es decir, qué evento usas o qué función usas y en qué objeto.


Cita de: penumbra en Octubre 16, 2015, 09:35:20 PM
Cita de: evansmako123 en Octubre 16, 2015, 09:12:45 PM
Problema numero 1: Tengo una animacion para cuando el peaton es atropellado, pero esta animacion se repite sin parar... me gustaria parara en el ultimo Sprite.
Suponiendo que el sprite se llame spr_atropellado. Una solución sería usar el siguiente  código en STEP

[gml]
if (sprite_index == spr_atropellado) and (image_index >= image_number-1)
     image_speed = 0    // Detener la animación del sprite en la última subimagen, antes que se repita
[/gml]

Otra solución sería agregar un evento ANIMATION END, y ahí escribir:
[gml]
if (sprite_index == spr_atropellado)
     image_speed = 0
[/gml]

Cita de: evansmako123 en Octubre 16, 2015, 09:12:45 PM
Me gustaria que la animacion se active solamente cuando toque los pixeles de la moto
Se necesitaría saber cómo estás manejando esa colisión, es decir, qué evento usas o qué función usas y en qué objeto.



Muchas gracias, me sirvio!!!

Respecto a tu pregunta, te mandare una imagen.

Soy bastante nuevo en esto de Game Maker, he creado juegos muy basicos y esta vez he optado por crear uno sin base a algun otro juego o tutorial... por ende se me hace bastante dificil cuando se presentan problemas que no he visto y no se como buscar solucion.

spr_nikolo1 seria el "atropellado"
obj_player el motoquero.

Si sólo importa la colisión de la moto con el peatón, modifica el bounding box del sprite de la moto de modo que sólo abarque las ruedas de la moto.


Cita de: Guacusio en Octubre 16, 2015, 10:42:55 PM
Si sólo importa la colisión de la moto con el peatón, modifica el bounding box del sprite de la moto de modo que sólo abarque las ruedas de la moto.

Muchas gracias Guasacolo, eso resolvio mi problema... tengo un ultimo problemilla. Como ves, la imagen del atropellado esta encima de la del motoquero y no deberia verse asi... comprendo que si pongo al atropellado primero y al motoquero despues conseguire el efecto que quiero de ese lado, pero del otro no. Me gustaria que hubiera una forma de poder rodear al atropellado sin que la imagen se superponga.

#5 Octubre 17, 2015, 01:46:26 AM Ultima modificación: Octubre 17, 2015, 01:48:41 AM por penumbra
Si no has modificado la profundidad (depth) de esos objetos, ambos tienen una profundidad 0. Le puedes dar al atropellado una profundidad mayor, por ejemplo 100, y esto hará que quede por debajo, o al revés, darle una profundidad menor al motoquero (no conocía esta palabra), por ejemplo, -100.

Los objetos con profundidad mayor se dibujan primero, los objetos con profundida menor se dibujan después (quedan encima)

Cita de: penumbra en Octubre 17, 2015, 01:46:26 AM
Si no has modificado la profundidad (depth) de esos objetos, ambos tienen una profundidad 0. Le puedes dar al atropellado una profundidad mayor, por ejemplo 100, y esto hará que quede por debajo, o al revés, darle una profundidad menor al motoquero (no conocía esta palabra), por ejemplo, -100.

Los objetos con profundidad mayor se dibujan primero, los objetos con profundida menor se dibujan después (quedan encima)

Muchas gracias, eso seria todo!