Bonjour,
Je suis moi aussi sur un platformer 2D pour le plaisir, mais je débute vraiment...
J'ai mis un background, du sol, des warps d'un niveau au suivant, un personnage qui peux se déplacer dessus et sauter.
J'ai mis en objects visibles mais non solides des sprites de PNJ.
Ainsi, le personnage qu'on contrôle peux "passer à travers" comme s'il passait à côté (mais sur un plan 2D)
J'ai essayé d'attribuer a ces objects PNJ le fait que, si collision entre un d'eux et le personnage se fait, alors il y a un texte qui se mets au dessus du PNJ pour dire "Hi !"
Sauf que ça marche pas, rien ne s'affiche
Quelqu'un pourrait m'aider ?
Salut, les fonctions d'affichage ne fonctionnes que dans l'event draw.
Tu peux écrire ça dans le draw du pnj:
if place_meeting(x,y,le_nom_de_objet_joueur) // si il y'a collision avec le joueur
{
// si cette condition est respecté alors on dessine le texte
draw_text(x,y,"Hi !")
}
A toi d'ajuster les x et les y en faisant par exemple x+30 pour que se soit plus à droite ou x-53 pour plus gauche etc...
ps.Il ne faut pas qu'il y'est d'espaces d'accents ou de symboles particulier dans le nom de l'objet joueur.
Bonjour,
J'aurais voulu savoir quelle est la meilleur methode pour réaliser l'animation du hero qui attaque à l'épée. Car si j'appelle mon sprite "attaque" via le step, l'animation reviens à 0 dés que je donne une nouvelle instruction au héros (haut bas gauche droite saut).
Merci d'avance
Tu peux ajouter une condition à tes contrôles (pour les déplacements)
if sprite_index != spr_attaque // si le sprite n'est pas sprite attaque
{
// tes contrôles de déplacement.
}
Merci beaucoup de ta réponse ça marche mais de fait je perd le contrôle sur le mouvement. Au moins je boucle l'animation et pour le moment ce sera amplement suffisant, je pense que les vilains seront gratifiés d'un recul supplémentaire ! Il est temps de passer à autre chose après 4 jours, merci ! !
Ben tu peux placer cette condition uniquement au endroits ou tu change de sprite dans les déplacements sans englober le reste.
Bonjour chopsueys;
Merci pour ta réponse.
Du coup j'ai mis sur ça sur l'objet PNJ en remplaçant "le_nom_de_objet_joueur" par Character, l'objet que l'on "incarne".
J'ai également vu avec les x;y pour bien placer le texte.
ça marche niquel du coup, mais petit soucis, ça fait disparaitre le sprite du PNJ...
(Le PNJ existe bel et bien, puisque quand je vais là où je le place, ça mets le "Hi !", mais il est devenu totalement invisible !)
Dans les propriétés, il est juste coché en "Visible", et si je retire l'event "Draw", il est de nouveau visible...
Je continue de regarder des tutos, mais je trouve ça bizarre, n'étant pas habitué, je ne sais pas identifier la source du problème
ça viendrait du fait que je mette "Draw" en event, mais ça ne marche pas avec "Create" ou autre...
C'est normal en fait ^^
Le fait d'utiliser des fonctions d'affichage désactive le système d'affichage "classique" il te suffit de réordonner au programme d'afficher ton sprite, de cette façon:
draw_sprite_ext( sprite_index,image_index,x,y, image_xscale,image_yscale,image_angle,-1, image_alpha) <==(normalement c'est en une seul ligne bien sûr)
J'ai trouvé, j'ai simplement fait un PNJ sans skin que je place au même endroit que les PNJ avec skin, comme ça ça marche ^^
Ah j'avais pas vu ta réponse !
Je vais essayer ça aussi alors
(Je te remercie)
Oui il vaut mieux que tu écrives cette ligne de code dans ton draw par ce que faire des double objets à chaque fois que tu veux afficher un truc c'est pas une bonne idée ^^
Bon après je n'ai prévu de ne faire que 6 ou 7 rooms, et ne jamais rien publier, c'est pour mon plaisir perso, pour satisfaire une certaine soif d'apprendre dans le domaine...
(Je suis à la base du graphisme, mais j'essaye d'appréhender sans nécessairement approfondir ce qu'il y a un peu autour ^^)
Du coup je vais maintenant m’intéresser aux timers, faire apparaître par exemple un warp vers le niveau suivant mais qu'au bout de 30 sec...
ça promets, avec ces histoires de step et tout ! XD
C'est pas si dur à comprendre les step.
step=frame, comme dans "frame per second" (fps) le nombre de rafraichissement d'image pas secondes.
Je vais essayé de t'expliquer comment GM fonctionne à ce niveau là:
Tu lances le jeu, tu es au 1er step (à la 1er frame) Gm a une liste de tous les objets présent dans la room et il va les lire un par un. Il commence par le 1er objet il regarde en 1er ce qu'il se trouve dans l'event create (puisque l'objet vient de se créer)
Dans cette event create il y a écrit par exemple:
a=10
b=15
A présent GM connait les valeurs de a et b, chaque fois qu'il verra a ou b il comprendra la dernière valeur qui leurs a été assimilé. Il n'y a rien d'autre dans l'event create alors GM passe à l'event suivant (on est toujours dans le step 1) il lit dans le step:
a=a+1 (en gros on augmente a de 1 ce qui peut s’écrire aussi a+=1)
Donc 10=10+1 ce qui fait 11
puis en dessous b=b+a donc b=15+11 b=26
Il n'y a rien d'autre à lire dans cette objet GM passe à l'objet suivant il lit tout ce qu'il contient etc... jusqu’à ce qu'il n'y est plus d'objet. Gm a fait le tour de tous les objets alors il passe au step 2 il relis le 1er objet ne lis pas l'event create puisque l'objet ne vient pas de se créer dans step il y'a dans le step (le step est l’événement qui est lu à chaque step):
a=a+1
b=b+a
donc:
a=11+1
b=26+12
a=12
b=38
C'est importent de comprendre que l'ordre d'écriture a une importance, GM lit comme nous de gauche à droite et de haut en bas.
Au bout de 30 steps donc au bout d'une seconde si ta room est réglé à 30 fps: a=40 et b=780
Salut !
Je ne sais pas si cette question a déjà été posée, mais bon, vu la tonne de pages... ^^"
Je suis tout nouveau sur GameMaker, et donc après avoir fait quelques tutos et regardé des vidéos, je fais mumuse avec cet outil en créant un pseudo-niveau de jeu de plateforme.
Rien de bien folichon, juste de quoi apprendre à programmer tout ça.
Bref, j'ai une physique pas trop dégueulasse, un perso qui répond bien, etc...
J'ai juste un petit problème d'animation.
J'ai un sprite animé pour la course vers la droite.
Je l'utilise aussi vers la gauche avec ça:
if (move !=0) image_xscale = move*2;
(D'ailleurs si vous savez aussi pourquoi j'ai besoin de mettre un "*2" pour ne pas perdre le ratio de l'image alors que "move" ne peut renvoyer que 1, -1 ou 0, ce serait cool)
Le perso se tourne bien comme prévu, mais le problème c'est que ses animations sont pas dans le bon ordre: c'est comme si il levait le pied de devant pour le mettre derrière, et que par magie il avançait quand même.
Comment je peux faire pour régler ce problème, sans refaire de sprites ?
Merci !
Arg p'tain j'ai trouvé...
image_speed = [valeur négative]
Bonjour,
Je recherche depuis un moment et j'ai essayé plusieurs tuto mais mon problème est récursif.
Le dernier en date est celui-ci
https://www.youtube.com/watch?v=xIsQux0FD44
Après avoir essayer de multiples fois avec de beaux sprites, j'en suis désormais à utiliser un vieux carré moisi pour comprendre pourquoi ça marche pas cette #####.
Ok alors mon problème est qu'après avoir créer sprite, object, collision, gauche et droite, room, j'effectue des tests et il s'avère que mon perso (carré) soit embourbé dans un marécage et je suis obligé de mitrailler une des touches directionnelles pour qu'il daigne avancer ...
A part ça la gravité marche nickel, et je n'ai pas encore codé le saut.
problème résolu ...
J'avais ajouter l'event "Key Press Left" et "Key Press Right" au lieu de simplement Keyboard "Left" et "Right"
Tout ce temps perdu pour ça
Bonjour à tous, j'ai une petite question... j'aimerais savoir comment, via un évenement, un des sons que j'ai choisi soit choisi et joué aléatoirement.
Exemple:
J’appuie sur espace, mon perso va crier "J'aime les pommes !"
Je ra-ppuye sur espace, il va crier "J'aime les artichauts !"
Voilà j'espère obtenir de l'aide, bonne journée à tous !