GameMaker - FAQ

Pour tout ce qui est fan arts, homebrew, shooters codés à la main, rip de sprites, doujins et toute autre productions artistiques ou logicielles faites maison.
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

J'ai d'autres chat a fouetter pour le moment mais j'essayerais de balancer un bout de code pour essayer de trouver une piste ce soir. :)
"... don't be there, or you gonna get drilled !"
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

Alors voilà.

J'ai le système de ma petite bebete volante :

Code : Tout sélectionner

part = part_system_create()

pt = part_type_create()
pt = part_type_sprite(0, sParticule, 0, 0, 0)
pt = part_type_size(0,0.7,1,0,0);
pt = part_type_direction(0,85,95,0,0);
pt = part_type_speed(0,1,5,0,0);
pt = part_type_life(0,5,10);
pt = part_type_alpha2(0,0.5,0.2);
pt = part_type_orientation(0,0,360,5,0,0);


pt1 = part_emitter_create(part);

Code : Tout sélectionner

part_emitter_region(part, pt1, x-20,x+20,y+30,y-30,pt,ps_distr_linear);
//part_emitter_region(part, pt1, mouse_x,mouse_x,mouse_y,mouse_y,pt, ps_distr_gaussian);
part_emitter_stream(part, pt1, pt, 1);
Et celui de ma grosse bebete volante :

Code : Tout sélectionner

part2 = part_system_create()

bpt = part_type_create()
bpt = part_type_sprite(0, sParticuleBird, 0, 0, 0)
bpt = part_type_size(0,0.7,1,0,0);
bpt = part_type_direction(0,85,95,0,0);
bpt = part_type_speed(0,1,5,0,0);
bpt = part_type_life(0,5,10);
bpt = part_type_alpha2(0,0.5,0.2);
bpt = part_type_orientation(0,0,360,5,0,0);


bpt1 = part_emitter_create(part2);

Code : Tout sélectionner

part_emitter_region(part2, bpt1, x-100,x+100,y-50,y-100,bpt,ps_distr_linear);
//part_emitter_region(part, pt1, mouse_x,mouse_x,mouse_y,mouse_y,pt, ps_distr_gaussian);
part_emitter_stream(part2, bpt1, bpt, 3);
Au final les deux ont on le sprite "sParticuleBird". :grrr:
Désolé pour les noms, c'était pour tester. ^^
"... don't be there, or you gonna get drilled !"
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Coté code, je vois rien de particulier... regarde du coté des sprites dans ce cas ^^
Il y a peut-etre un conflit de nom aussi...
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
psychogore
1 crédit c'est déjà trop
Messages : 2358
Inscription : 23 mai 2003, 09:04

backwash a écrit :

Code : Tout sélectionner

part2 = part_system_create()

bpt = part_type_create()
bpt = part_type_sprite(0, sParticuleBird, 0, 0, 0)
bpt = part_type_size(0,0.7,1,0,0);
bpt = part_type_direction(0,85,95,0,0);
bpt = part_type_speed(0,1,5,0,0);
bpt = part_type_life(0,5,10);
bpt = part_type_alpha2(0,0.5,0.2);
bpt = part_type_orientation(0,0,360,5,0,0);


bpt1 = part_emitter_create(part2);

Code : Tout sélectionner

part_emitter_region(part2, bpt1, x-100,x+100,y-50,y-100,bpt,ps_distr_linear);
//part_emitter_region(part, pt1, mouse_x,mouse_x,mouse_y,mouse_y,pt, ps_distr_gaussian);
part_emitter_stream(part2, bpt1, bpt, 3);
Au final les deux ont on le sprite "sParticuleBird". :grrr:
Désolé pour les noms, c'était pour tester. ^^
Il faut vraiment utiliser des affectations avec le signe "=" ? Il ne faut pas plutot utiliser l'operateur "." ?
Je veux dire, faire

Code : Tout sélectionner

bpt.part_type_sprite(0, sParticuleBird, 0, 0, 0)
par exemple.
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

je vais vérifier un truc...
Mais cela pourrait survenir quand tu tentes de créer les 2 systèmes de particules.
Ils se superposent.

Code : Tout sélectionner

p_id = part_system_create();

color1=make_color_rgb(255,92,0);
color3=make_color_rgb(231,190,40);
choix=choose(color1,color3);

  part_type_size(p_id,0.2,0.8,0,0);
  part_type_speed(p_id,0.5,5,0,0);
  part_type_direction(p_id,direction+180,direction+180,0,20);
  part_type_life(p_id,7,10);
  part_type_shape(p_id,pt_shape_explosion);
  part_type_color2(p_id,color1,choix);
  part_type_alpha1(p_id,0.30);

em = part_emitter_create(ps);
  part_emitter_region(ps,em,x-3,x+3,y-3,y+3,ps_shape_ellipse ,ps_distr_gaussian);
  part_emitter_burst(p_id,em,pt_shape_pixel,5);
Test ce code, ca fonctionne.

Psychogore :
le point est utilisé pour lié quelque chose à un objet.
hors bpt n'est pas un objet, mais une variable contenant l'ID que retourne chaque fonction utilisées ^^

hors, il n'y a pas besoin de préciser la variable pour stocker l'ID du système de particule pour les autres fonctions en dehors de la création du système et la création d'un emitter.
La seule chose que contiendra les variables sera la valeur de retour des fonctions...
Ce qui veut dire que si le second système de particule a un ID de 1...
Et que toutes les autres fonctions retournent 1 quand elles se sont bien exécutée... On est niqué :p

C'est le seul fonctionnement que je peux en déduire sans faire de test plus poussé...
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

Tes deux dernieres lignes sont bien dans le step ?
Car ça me sort des erreurs moi.
A tous les coups mes scripts sont mal placés...
"... don't be there, or you gonna get drilled !"
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Zut j'ai donné les mauvais scripts :D

Code : Tout sélectionner

//création du système de particule
ps = part_system_create();
//création du type de particule
p_id=part_type_create();
// définition des couleurs , codage type RGB 
color1=make_color_rgb(230,230,230);
color3=make_color_rgb(190,190,190);

// définition de la forme et de la direction du système de particule
  part_type_size(p_id,0.1,0.1,0,0);
  part_type_speed(p_id,0.5,5,0,0);
  part_type_life(p_id,5,5);
  part_type_shape(p_id,pt_shape_smoke);
  part_type_color2(p_id,color1,color3);
  part_type_alpha1(p_id,0.25);
// création de l'émetteur de particule
em = part_emitter_create(ps);

// permet de "tirer" les particules dans l'event step

  part_type_direction(p_id,direction+180,direction+180,0,0); // met à jour à la direction opposée de l'objet
  part_emitter_region(ps,em,x-2,x+2,y-2,y+2,ps_shape_ellipse ,ps_distr_linear); // met à jour la position de l'émetteur des particules dans le système de particule
  part_emitter_burst(ps,em,p_id,10); // tire une salve de particule du système de particule
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Vince2
Dieu de la Borne
Messages : 1929
Inscription : 12 déc. 2009, 17:44
Localisation : LYON

JE vois que game maker est un logiciel téléchargeable et gratuit mais a priori il y a plusieurs versions: Laquelle pour un GROS débutant?
Image

Rage Against The Bullets Jeuvidéothèque Megadriver for ever Mon Blog: Dess'Note
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

La version d'essai gratuite permet déjà de faire pas mal de choses :)
Après, rien ne t'empèche de passer a la version pro si tu vois que ca vaut le coup pour ce que tu veux en tirer ^^
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
Lole
Shmuppeur turgescent
Messages : 4912
Inscription : 15 juil. 2009, 13:21

Est ce qu'avec la version gratuite on est limité au niveau du code en gml ou c'est juste le drag and drop qui est limité?
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Les deux sont limités, les fonctions avancée qui permettent de faire des effets de particules par exemple sont non disponibles, les fonctions intégrées de pathfinding sont bloquées aussi.

On peut faire sans, mais ca se verra au niveau perf.
Il est mieux d'utiliser les fonctions avancées inclues dans la version pro pour simplifier et avoir un code plus performant.

Il y a peu de fonctionnalités complètement bloquées.
C'est généralement des mécanismes relativement complexes.

Dans tous les cas, on peut se débrouiller sans dans un premier temps ;)
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

J'viens de m'y remettre et ton code marche au poil Gunny.
Je comprend pas pourquoi j'avais des interférences par contre.
"... don't be there, or you gonna get drilled !"
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

un nom, une valeur... Ca va vite ^^
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

j'avais pris soin d'isoler toutes les valeurs sur chacun des deux systemes.
M'enfin bref, passons. :mrgreen:
"... don't be there, or you gonna get drilled !"
Répondre