Ben vas y, balances !!!!Gunny a écrit :On peut faire ce qu'on appelle du swap color.
Et il y a plus simple comme système ^^
Il y a toujours mieux et toujours plus simple !
Code : Tout sélectionner
draw_sprite(sprite, subimg, x, y);
Code : Tout sélectionner
if ( keyboard_check_pressed(vk_space) ) // pour éviter que ca cycle tout seul en maintenant appuyé
{
if ( selecteur < 4 )
{
selecteur+=1;
}
else
{
selecteur=0;
}
}
Code : Tout sélectionner
draw_sprite(sprite, selecteur, x, y);
Je suis peut-etre fatigué, mais pourquoi ne pas faire simplementAlec a écrit :J'ai enfin réussi à faire un système de sélection d'arme bien sympa !
tout d'abord faire un sprite de cinq frame numérotées normalement de 0 à 4
créer un objet
dans create:
Code : Tout sélectionner
global.hud=0 image_speed=0; subimage=0;
dans step :
Code : Tout sélectionner
///petite option, quand on s'approche du hud celui ci devient transparent if distance_to_object(ogauntlet)<10 image_alpha=0.2; else image_alpha=1; ////// ça peut servir if global.hud=0 {subimage=0;} if subimage=0 {global.hud=0} if (keyboard_check(ord('C'))) {image_speed=0.2} else image_speed=0;
et enfin dans "animation end"
Code : Tout sélectionner
global.hud= +1
Quand on appuie sur C, l'animation prend la vitesse de 1 mais est bloquée par la variable global.hud,
donc game maker croit que l'animation est teminée et remet sa vitesse à 0 alors qu'on a tout juste passé une frame d'amination sur le sprite (le dessin du deuxième tir par exemple)
De même quand on rappuie sur C, on passe à la troisième frame......puis à la 5ème et quand on rappuie sur C tout se remet à zéro :
global.hud se remet à 0
le sprite se remet à la première frame
quand on laisse appuyé sur C les armes défilent de la première à la dernière en formant une boucle (1,2,3,4,5,1,2,3,4,5 etc....)
Il suffit d'assigner ses tirs sur les variables genre :
global.hud=0...........utiliser tir 1 (illustrée par l'image0 du sprite)
global.hud=1...........utiliser tir 2 (illustrée par l'image1 du sprite)
global.hud=2...........utiliser tir 3 (illustrée par l'image2 du sprite)
global.hud=3...........utiliser tir 4 (etc....)
global.hud=4...........utiliser tir 5 (etc....)
Et ça peut servir aussi à faire un vaisseau qui change d'état (comme dans ikaruga)
Par exemple pour passer du noir au blanc il suffit de faire un sprite en deux frames, une noire et l'autre blanche mais pour un vaisseau c'est pas très malléable (les animations de déplacements sont impossibles ou alors compliquées à mettre en place)
Code : Tout sélectionner
///petite option, quand on s'approche du hud celui ci devient transparent
if distance_to_object(ogauntlet)<10
image_alpha=0.2;
else
image_alpha=1;
////// ça peut servir
if (keyboard_check(ord('C')))
global.hud=(global.hud+1) mod 5
sprite_index=global.hud
Alec a écrit :comme ça ça marche pas non plus.....Code : Tout sélectionner
time_left = -1;
C'est normal que tes incrémentations ne marchent pas car tu fais des assignations de valeurs absolues.Alec a écrit :Code : Tout sélectionner
global.hud= +1
Code : Tout sélectionner
draw_sprite(sprite,subimg,x,y)
draw_sprite_stretched(sprite,subimg,x,y,w,h)
draw_sprite_tiled(sprite,subimg,x,y)
draw_sprite_part(sprite,subimg,left,top,width,height,x,y)
draw_sprite_ext(sprite,subimg,x,y,xscale,yscale,rot,color,alpha)
draw_sprite_stretched_ext(sprite,subimg,x,y,w,h,color,alpha)
draw_sprite_tiled_ext(sprite,subimg,x,y,xscale,yscale,color,alpha)
draw_sprite_part_ext(sprite,subimg,left,top,width,height,x,y,xscale,yscale,color,alpha)
draw_self()
Code : Tout sélectionner
draw_sprite_general(sprite,subimg,left,top,width,height,x,y,xscale,yscale,rot,c1,c2,c3,c4,alpha)
Oui, je forçais le trait sur cette opération, mais j'ai cru comprendre que tu avais 1 sprite par couleur à colorer, j'ai sans doute mal compris.psychogore a écrit :Donc dire que la recolorisation (qui se resume finalement à faire une operation logique bit à bit sur les couleurs des pixels) prend de la ressource me semble exageré.