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)
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!
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...