Accueil | Personnaliser | Blog | Extras | Log In | Information
Manuel | D&D icons | GML Parser | Archives | Ville Iso
Username: Password:  
à propos | Caractéristiques | Directory | Bannières | Contacter

Création de jeux avec Game Maker
Création de jeux avec Game Maker

Les Déplacements

Un aspect important des jeux est certainement le déplacement des instances d'objets. Chaque instance posséde deux variables internes x and y qui indiquent la position de l'instance (pour être précis, elles indiquent la position où l'origine du sprite est placée). Position (0,0) correspond au coin supérieur gauche de la room. Vous pouvez changer la position de l'instance en changeant ses variables x et y. Si vous souhaitez que l'objet effectue des mouvements sophistiqués, ce sera la bonne méthode à suivre. Vous placerez habituellement ce code dans l'événement step de l'objet.

Si l'objet doit se déplacer avec une vitesse et une direction constantes, il y a une façon plus simple de réaliser tout cela. Chaque instance d'objet posséde une vitesse horizontale (hspeed) et verticale (vspeed). Ces deux paramétres sont exprimés en pixels par step. Une vitesse positive horizontale indique un mouvement vers la droite, une vitesse négative horizontale signifie un déplacement vers la gauche. Une vitesse positive verticale mentionne un mouvement vers le bas tandis qu'une vitesse négative verticale un déplacement vers le haut. Vous ne devrez intialiser ces variables qu'une seule fois (par exemple dans l'événement de création) afin de donner à l'instance d'objet un mouvement constant.

Il y a plusieurs façons d'indiquer un mouvement, en utilisant une direction (en degrés 0-359) et une vitesse (ne doit pas être négative). Vous pouvez fixer et lire ces variables pour spécifier un déplacement arbitraire (en interne, cela concerne les valeurs hspeed et vspeed.) Il existe également la friction, la gravité et la direction de la gravité. Enfin, il y a la fonction motion_add(dir,speed) qui ajoute un déplacement à l'actuel mouvement.

Pour être complet, chaque instance posséde les variables et les fonctions suivantes ayant traits à leur position et leur déplacement :

x sa position en x.
y sa position en y.
xprevious sa position précédente en x.
yprevious sa position précédente en y.
xstart sa position de départ en x dans la room.
ystart sa position de départ en y dans la room.
hspeed composant horizontal de la vitesse.
vspeed composant vertical de la vitesse.
direction sa direction courante (0-360, sens contraire des aiguilles d'une montre, 0 = vers la droite).
speed sa vitesse actuelle (pixels par step).
friction friction actuelle (pixels par step).
gravity valeur actuelle de la gravité (pixels par step).
gravity_direction direction de la gravité (270 indique vers le bas).
motion_set(dir, speed) paramètre le déplacement avec la vitesse indiquée vers la direction dir.
motion_add(dir, speed) additionne le mouvement à l'actuel mouvement (addition de vecteurs).

Il existe une grande quantité de fonctions disponibles qui vous aideront à définir vos mouvements :

place_free(x, y) Retourne si l'instance placée à la position (x,y) est hors collision. On l'utilise habituellement comme vérification avant de déplacer l'instance à sa nouvelle position.
place_empty(x, y) Retourne si l'instance placée à la position (x,y) rencontre quelque chose. Cette fonction prend également en compte les instances non solides.
place_meeting(x, y, obj) Retourne si l'instance placée à la position (x,y) rencontre obj. obj peut être un objet auquel cas la fonction retourne true (VRAI) si une instance de cet objet est rencontrée. Cela peut aussi être un ID d'instance, le mot spécial all indiquant une instance d'un objet quelconque ou le mot spécial other.
place_snapped(hsnap, vsnap) Retourne si l'instance est alignée avec les valeurs de rupture.
move_random(hsnap, vsnap) Déplace l'instance à une position libre, à une position de rupture, comme l'action correspondante.
move_snap(hsnap, vsnap) Snaps the instance, like the corresponding action. (NDT : quelle est la traduction de cette phrase ?)
move_wrap(hor, vert, margin) Place l'instance de l'autre côté lorsque celle-ci a quitté la room. hor indique si l'on doit la placer horizontalement et vert verticalement. margin indique à quelle distance l'origine de l'instance doit être en dehors de la room avant que le placement n'intervienne. C'est donc une marge par rapport aux bords de la room. Vous utiliserez habituellement cette fonction dans l'événement Outside.
move_towards_point(x, y, sp) Déplace les instances avec la vitesse sp vers la position (x,y).
move_bounce_solid(adv) Rebondit contre les instances solides, comme l'action correspondante. adv indique si l'on doit employer le rebond anticipé qui prend également en compte les murs inclinés.
move_bounce_all(adv) Rebondit contre toutes les instances, au lieu de ne prendre en compte que les instances solides.
move_contact_solid(dir, maxdist) Déplace les instances dans la direction donnée jusqu'à ce qu'elles entrent en contact avec un objet solide. Si aucune collision ne se produit à la position courante, l'instance sera placée juste avant qu'une collision ne survienne. Si il y a déjà une collision, l'instance ne sera pas déplacée. Vous pouvez indiquer la distance maximale pour le déplacement (utilisez un nombre négatif pour avoir une distance arbitraire).
move_contact_all(dir, maxdist) Mémes effets que la fonction précédente mais cette fois, l'instance sera stoppée si elle entre en contact avec un objet quelconque et non pas uniquement avec un objet solide.
move_outside_solid(dir, maxdist) Déplace l'instance dans la direction jusqu'à ce qu'elle ne se trouve plus en contact avec un objet solide. S'il n'y pas de collision à la position courante, l'instance ne sera pas déplacée. Vous pouvez indiquer la distance maximale pour le déplacement (utilisez un nombre négatif pour avoir une distance arbitraire).
move_outside_all(dir, maxdist) Mêmes effets que la fonction précédente mais cette fois-ci, vous déplacerez l'instance jusqu'à ce qu'elle ne se trouve plus en contact avec un objet quelconque et non pas uniquement avec un objet solide.
distance_to_point(x, y) Retourne la distance de la boîte de rebond de l'instance courante par rapport à (x,y).
distance_to_object(obj) Retourne la distance de l'instance par rapport à la plus proche instance de l'objet obj.
position_empty(x, y) Retourne s'il n'y a rien à la position (x,y).
position_meeting(x, y, obj) Retourne si à la position (x,y), il y a une instance obj. obj peut être un objet, un ID d'une instance ou les mots-clés self, other ou all.













<< Traduction française par Philippe Ragni - (2005) >>

Search Search


Alternative versions Alternative versions

You can also read this manual on one single long page (± 1.5 mb)

Also available in: Dutch English German

ZIP Download helpfile

Annonces Annonces

GameMaker Manual