Buenas,

Tengo un objeto que va cambiando dependiendo del health que tenga. El código en el step lo hace así:

if (health >= 70) {
    sprite_index = blue_wave
} else if (health > 40 and health < 70) {
    sprite_index = orange_wave
} else if (health <=40) {
    sprite_index = red_wave
}


Me gustaría además que en el momento de una colisión, el objeto hiciera un parpadeo con otro sprite. He puesto el siguiente código también en el step al principio de todo:
if collision_rectangle(bbox_left, bbox_top, bbox_right, bbox_bottom, enemy, true, true) {
    ready = 1
    show_debug_message(ready)
}


pero no me devuelve nada. Si cambio  el sprite en el evento de collision con enemy, me ejecuta el step y no se ve nada. ¿Como lo haríais?

checa con esta otra funcion

collision_point(x,y,obj,prec,notme)
Es Mejor No Saber Porque Funciona, Que Saber El Porque No Funciona...
Tienes alguna duda con "Game Design" o de videojuegos en general, contactamente mas facil en twitter @pavulzavala

#2 Marzo 12, 2012, 11:10:33 PM Ultima modificación: Marzo 12, 2012, 11:12:12 PM por Exe_mas
Yo haría una variable spr para menejar el sprite_index y lo dibujaría en draw, que tiene más opciones, y no usaría un sprite para cada color siendo que se pueden modificar con blend options.
Por ejemplo:
Create event:
spr = wave
col = c_blue
alp = 1
ready = 0

Step event:
if (ready = 0){
if (health >= 70) {
    col=c_blue
} else if (health > 40 and health < 70) {
    col=c_orange
} else if (health <=40) {
    col=c_red
}
else {col = elcolorquequieras (c_algo, make_color_rgb(), etc)
}


Collision event:
ready = 1
if alarm[0]=-1{alarm[0] =  30}


Alarm[0] event:
ready = 0

Draw Event:
draw_sprite_ext(spr,image_index,x,y,1,1,0,col,alp)

Espero te sea útil!



Yo no fu?!

#3 Marzo 13, 2012, 04:35:56 AM Ultima modificación: Marzo 13, 2012, 04:37:50 AM por elviskelley
No veo la necesidad de tantas comparaciones.
if (health <=40)
{sprite_index = red_wave}
else
if (health < 70)
{sprite_index = orange_wave}
else
if (health >= 70)
{sprite_index = blue_wave}

//haciendo asi evita es si es > pero < ... queda mas limpio el codigo.

Lo de la colision, no veo por que no usas el event de colisiones, en todo caso usa place_meeting(x,y,obj) siempre me ha resultado mejor.
Y lo de que vibre osea haciendose transparente y visible lo haces con 3 alarm y una variable.
Event create
Declara la variable para que se transparence al ser tocado por el enemigo.
vartrans=false;

Event de colsion o dentro del if de la colision en el step, donde sea que llames la colision.
if !vartrans
{
alarm[0]=0.1*room_speed;
alarm[3]=3*room_speed;
vartrans=true;
}

event alarm[0]
visible=false;
alarm[1]=0.1*room_speed;

Event alarm[1]
visible=true;
if vartrans
{alarm[0]=0.1*room_speed;}

Event alarm[3]
vartrans=false;

Bueno... Eso es todo amigos...