| Engine | |
|
|
|
Auteur | Message |
---|
kepler Débutant
Messages : 13
| Sujet: Engine Mar 17 Avr 2012 - 14:20 | |
| Bonjour tout le monde,
je suis sur le point de commencer le développement d'un jeu de plateforme (les graphismes sont bien avancés).
Le but est qu'il soit compatible html5. Apparemment game maker permet cette compatibilité via une licence.
J'ai choisi une résolution de 480*320 pour mon jeu et la taille des sprites est de 48*48.
Petit soucis: je n'y connais rien en programmation, mais je veux bien apprendre.
j'ai vu que des moteurs existent déjà comme par exemple le hello engine.
excellent si on a pas envie de réinventer la roue.
je ne sais pas comment on utilise ces "engine"
pouvez vous me conseiller svp ?
merci |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Engine Mar 17 Avr 2012 - 14:49 | |
| Salut :b Ben pour utiliser un moteur, a la base vaux mieux quand même savoir programmer un minimum, sinon a part changer la partie graphique du moteur tu pourras pas faire grand chose, et t'auras pas beaucoup de mérite x) Les jeux de plateforme ça reste quand même le le type de jeu certainement le plus adapté a faire avec GM, alors je te conseille de lire quelques tutos, regarder quelques exemples, et te familiariser avec GM avant d'acheter une quelconque licence de GM HTML5, qui est trèèèès cher pour ce qu'elle est ... Donc essaye déjà de faire ton jeu avec une version gratuite de GM, et si tu y arrive pourquoi pas transformer ton jeu en jeu HTML5 |
|
| |
kepler Débutant
Messages : 13
| Sujet: Re: Engine Mar 17 Avr 2012 - 17:15 | |
| merci pour ta réponse et message bien compris.
par contre le drap & drop suffit il ?
et retrouve t on le drap & drop dans game maker studio ? |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: Engine Mar 17 Avr 2012 - 21:52 | |
| Normalement le D&D suffit mais bon le gml c'est bien mieux. Pour l'autre question, je n'en sais rien, mais je suis certain que oui. Le gros avantage du D&D est qu'au lieu de retenir le nom gml d'une fonction, on peut ne retenir que l'image. Sinon, la syntaxe du gml est même plus simple, plus claire et plus modulable que celle du D&D car non seulement on n'a pas besoin de cliquer sur une icône pour savoir ce qu'elle contient, mais en plus rapide à écrire : deux exemples : il y a la saisie automatique pour certaines choses, et pour les variables, il suffit juste de les écrire pour les déclarer ou les modifier, enfin écrire est souvent plus rapide qu'aller dans le bon onglet-cliquer-déplacer-effectuer les réglages. Enfin, comme c'est du texte et que le gml est assez sympa tu peux l'agencer comme tu veux, ce qui signifie que si tu l'indentes bien, tu peux rendre ton code très agréable à lire surtout avec la colorisation automatique. Beaucoup de fonctions intéressantes n'existent pas en D&D, comme collision_line. En tant que simple texte, ton code est portable, donc tu peux le réutiliser pour tes autres jeu ou le poster pour savoir d'où vient le problème avec un simple copier-collé. [edit]Il ne faut pas avoir peur du gml parce que cela ressemble plus à de la vraie programmation que le D&D. En fait les 2 sont des langages de programmation. La structure d'un code D&D est la même que son équivalent en gml.Enfin, même si tu préferes retenir les images plutôt que les noms quitte à perdre tout cela, il te sera peut-être nécessaire d'utiliser quand même ces noms... Et si tu veux des liens pour apprendre, je te renvoie au sujet ci-dessous, où je donne des conseils et des liens à un autre débutant. https://cbna.forumactif.com/t11668-probleme-de-cote |
|
| |
SPLN Utilisateur confirmé: Rang ***
Messages : 588 Localisation : Sur son ordinateur *vous vois* arrêtez de me regarder comme ça Projet Actuel : En quête de projet(s)!
Mes projets:
SP Lecteur Multimedia (Stand by)
S-Portable Graphics (demo1.8 is out! demo2.0 is planned)
SSB RPG (Stand by)
| Sujet: Re: Engine Mer 18 Avr 2012 - 3:58 | |
| Sinon tu as le CBNA D&D Decoder si tu veux retrouver l'équivalent en GML des fonctions D&D. Ça m'a été très utile car il m'a permis de "transitionner" transiter du D&D vers le GML.
Dernière édition par SPLN le Mer 18 Avr 2012 - 18:00, édité 2 fois |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: Engine Mer 18 Avr 2012 - 12:56 | |
| |
|
| |
SPLN Utilisateur confirmé: Rang ***
Messages : 588 Localisation : Sur son ordinateur *vous vois* arrêtez de me regarder comme ça Projet Actuel : En quête de projet(s)!
Mes projets:
SP Lecteur Multimedia (Stand by)
S-Portable Graphics (demo1.8 is out! demo2.0 is planned)
SSB RPG (Stand by)
| Sujet: Re: Engine Mer 18 Avr 2012 - 17:57 | |
| J'avoue que le matin je n'ai pas les idées très claires |
|
| |
kepler Débutant
Messages : 13
| Sujet: Re: Engine Mer 18 Avr 2012 - 20:46 | |
| merci pour vos posts instructifs. j'ai suivi les conseils de onilink, je me suis abonné sur ces tutos link (il va un peu vite notre québécois) @onilink c'est pas grave si je dois passer par un moteur déjà existant pour faire mon jeu. Le mérite, pour moi, ce serait que je produise un jeu original, beau (tout est créer aucun sprite recupérer) et je pensais que passer par hello engine me ferait gagner du temps @ Johny Wessmuller après t'avoir lu ça donne envie de pratiquer le GML. avec la video plus haut j'ai pu animer mon perso en quelques clic existe t il la même chose pour le GML ? @ SPLN merci |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: Engine Jeu 19 Avr 2012 - 17:25 | |
| Je ne sais pas s'il existe des vidéos montrant comment on programme en gml, d'ailleurs à mon avis ce serait moins efficace qu'un support de type texte. Du reste, pour le support de type texte, voici le récapitulatif des liens que j'ai donné à Bahamut - Spoiler:
Le quote qui suit est bien plus facultatif, mais d'une grande utilité - Spoiler:
- Johny Wessmuller a écrit:
- je te conseille fortement d'avoir un minimum de base en programmation si tu veux progresser, de toutes façons tu seras obligé à un moment de faire un peu de théorie parce que la pratique sans les connaissances ne mène pas très loin.
Aussi je te conseille par exemple de lire au moins la partie 1 "Partie 1 : [Théorie] Les bases du débutant" de ce cours de C http://www.siteduzero.com/tutoriel-3-14189-apprenez-a-programmer-en-c.html qui l'un des cours les plus visités de programmation en français. Même si tu ne souhaite pas apprendre le C, ce qui est expliqué dans ce cours (à part la syntaxe du language qui lui est évidemment propre) te donnera de bonnes bases qui te seront utiles dans n'importe quel langage (donc même en D&D).
A présent de nouveaux liens : La partie 2 du cours intégral dont j'ai donné le lien de la p1 plus haut : http://www.lecbna.org/pages/tuto_list.php?subaction=showfull&id=1239568315&archive=&start_from=&ucat=12&Dans la sous-catégorie game maker de la catégorie développement de ce forum, il y a des tas de tutos, exemple https://cbna.forumactif.com/t10919-tutoriels-apprendre-le-gml, qui a l'air très bien fait. https://cbna.forumactif.com/t11209-atelier-gml-1-fonctions-et-variablesEnfin, n'hésite pas à faire des recherches dans la sous-cat game maker, dans la sous-cat aide débutant et dans la sous-cat aide confirmée, qqn a sûrement déjà eu ton problème avant toi. Pour la vidéo, c'est vrai qu'il va un peu vite ; il n'explique pas pourquoi il utilise plutôt que par exemple. Voici l'explication (je répondais à qn d'autre) - Spoiler:
- Johny Wessmuller a écrit:
- Lu
Je pense que tu dois faire comme ça : left //ou step: if keyboard_check(vk_left) { ) alors // ou sprite_index= sprite1 par exemple.
Si c'est bien un truc comme ça que tu fais, t'as de la chance que je sois passé par là moi j'ai mis 40 ans à comprendre tout seul, je t'explique le pb
I Pourquoi tes sprites vont vite ?
L'unité de temps de ton jeu n'est pas la seconde, c'est le step. A chaque step ton jeu éxécute les actions que tu lui a données. Je crois que par défaut il y a 30 step par seconde (ou 30 frames par seconde, ce qui veut dire 30 images par secondes) Donc ton sprite animé ne change pas toutes les secondes, mais tous les step, donc 30 fois par seconde, c'est pourquoi il va vite. Tu peux changer sa vitesse d'au moins deux manières ( qui peuvent être complémentaires d'ailleurs ) : 1)Tu vas dans le menu d'édition du sprite du sprite et tu copie autant de fois que tu veux les images que tu veux voir plus longtemps 2)Tu modifies la vitesse d'animation du sprite dans le jeu en modifiant la variable gérant la vitesse du sprite, elle s'appelle image_speed et est à 1 par défaut, si tu la mets à 1/4 par exemple, cela signifie que l'on change d'image tous les 4 steps.
II Pourquoi tes sprites s'arrêtent ?
En fait ( équivalent de if keyboar_check()) est un évènement qui se déclenche à chaque step, donc à chaque step ton sprite va se recharger, et donc tu ne verras que la première image Voici l'évènement qui ne se déclenche qu'au début de la pression sur la touche : qui en gml donne if keyboard_check_pressed() C'est là que tu dois mettre tes sprites, ainsi que dans ( équivalent de if keyboard_check_released() je crois ou un truc comme ça la flemme d'aller vérifier) qui ne se déclenche qu'au moment ou la touche est relachée (pas après).
Au fait continues à n'utiliser que le gml le D&D c'est pour ceux qui débutent, et ce n'est pas portable, et plein d'autre trucs.
Bref, pour faire le même déplacement en gml voici comment tu peux faire Soit tu vas directement dans step et dans ceci : (c'est là qu'on écrit le code) tu mets : - Spoiler:
- Code:
-
if keyboard_check_pressed(vk_left) { hspeed=-5; sprite_index=mario_courir_g; } if keyboard_check_pressed(vk_left) { hspeed=5; sprite_index=mario_courir_d; } if keyboard_check_released(vk_left) { hspeed=0; image_index=2; } if keyboard_check_released(vk_right) { hspeed=0; image_index=2; }
Sinon met dans left le code qui est entre les 2 premières accolades, dans right celui qui est entre les 2 suivantes, dans left celui qui est dans les 2 qui suivent, et dans right celui qui est entre les 2 dernières. Et voici rapidement ma version améliorée de son code (et non testée) : - Spoiler:
Dans create - Code:
-
vitesse=5; droite=1; hvitesse=0; Dans step - Code:
-
if keyboard_check_pressed(vk_left) droite=-1; if keyboard_check_pressed(vk_right) droite=1;
if droite==-1 { if keyboard_check(vk_left) hvitesse=-vitesse; else if keyboard_check(vk_right) droite=1; else hvitesse=0; } else { if keyboard_check_pressed(vk_right) hvitesse=vitesse; else if keyboard_check(vk_left) { droite=-1; hvitesse=-vitesse; } else hvitesse=0; }
if hvitesse>0 sprite_index=mario_courir_d; else if hvitesse<0 sprite_index=mario_courir_g; else { sprite_index=mario_arret; image_xscale=droite; }
hspeed=hvitesse;
Quand tu comprendras mon code, tu auras fait un grand pas dans le monde merveilleux (lol) de game maker . Si tu te demandes pourquoi j'ai créé une variable hvitesse, c'est pour faciliter la gestion des collisions plus tard. [edit] Quant à la variable vitesse, c'est si tu veux la modifier sans tout réécrire. Note : Tu remarqueras l'indentation qui rend le code bien lisible. De rien. [edit] dernier edit à 17:33 à mon avis le code est maintenant fonctionnel mais toujours pas testé par moi |
|
| |
kepler Débutant
Messages : 13
| Sujet: Re: Engine Jeu 19 Avr 2012 - 19:47 | |
| merci mr Wessmuller, c'est... comment dire... copieux! ça fait même un peu peur j'ai lu le premier lien et déjà ça pique les yeux : INSTANCE, késako ? je n'arrive pas à cerner ce mot. |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: Engine Jeu 19 Avr 2012 - 20:05 | |
| Une instance d'un objet est un "individu" de cet objet. Exemple : tu crées un objet ennemi. Apres tu poses plein d'ennemis partout sur la map. Chacun de ces ennemis est une instance de l'objet ennemi.
Chaque instance est reperée par un numéro unique : l'ID.
A présent pour t'aider dans mon code : hspeed est une variable prédéfinie de game maker qui contrôle la vitesse horizontale de l'instance. image_xscale est une variable prédéfinie de gm qui contrôle l'étirement horizontal du sprite. Ainsi, si tu met image_xscale=16, le sprite sera étiré horizontalement d'un facteur 16, il sera 16 fois plus grand horizontalement. Si tu mets une valeur négative, ton sprite subira une symétrie par rapport à l'axe vertical avant d'être étiré du facteur égal à la valeur absolue de ce que tu as mis. (pense à bien centrer l'abscisse du sprite dans les reglages du sprite). Donc si tu mets -1, ton sprite sera le même mais avec une symétrie par l'axe vertical.
Et sinon, qu'est-ce que tu dis du test réalisé avec ma version du code ? Normalement, les plus immédiats (donc pas la gestion des collisions) sont qu'à l'arrêt, mario reprend son sprite de départ, et que les changements de direction sont plus faciles. |
|
| |
kepler Débutant
Messages : 13
| Sujet: Re: Engine Jeu 19 Avr 2012 - 21:37 | |
| sincèrement désolé je viens de me rendre compte que le lien que j'ai donné n'est pas le bon . c'est ici que ça se passe bon linkc'est toujours notre ami québécois mais c'est sur castelvania. très claire ton explication de l'instance merci. |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: Engine Ven 20 Avr 2012 - 10:07 | |
| - Spoiler:
- Citation :
- Code:
-
vitesse=5; droite=1; hvitesse=0; - Code:
-
if keyboard_check_pressed(vk_left) droite=-1; if keyboard_check_pressed(vk_right) droite=1;
if droite==-1 { if keyboard_check(vk_left) hvitesse=-vitesse; else if keyboard_check(vk_right) droite=1; else hvitesse=0; } else { if keyboard_check_pressed(vk_right) hvitesse=vitesse; else if keyboard_check(vk_left) { droite=-1; hvitesse=-vitesse; } else hvitesse=0; }
if hvitesse>0 sprite_index=mario_courir_d; else if hvitesse<0 sprite_index=mario_courir_g; else { sprite_index=mario_arret; image_xscale=droite; }
hspeed=hvitesse;
=> - Spoiler:
create: - Code:
-
dir_x=1; h_speed=5; Step - Code:
-
h_move=keyboard_check(vk_right)-keyboard_check(vk_left);
hspeed=h_move*h_speed;
if( h_move!=0 ){ dir_x=h_move; image_xscale=dir_x; }else image_index=2;
* disparaît comme il est apparut * |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: Engine Ven 20 Avr 2012 - 11:42 | |
| J'ignorais les valeurs que renvoyaient keyboard_check, j'aime bien cette idée du h_move Cela dit, dir_x ne sert à rien dans ton code.[edit] je retire ça, dir_x joue un rôle similaire à la variable droite de mon code[/edit] De plus, dans mon code, la variable droite est très utile ; elle permet de connaître l'orientation du perso. Voir le problème de Bahamut. En outre, lorsque Mario s'arrête avec mon code, il reprend son sprite mario_arret. Enfin, le changement de direction est simplifié avec mon code : avec ton code si on appuie sur gauche et droite en même temps, le perso s'arrête, avec le mien, le perso fait son mouvement selon la dernière touche appuyée, et si on relâche une touche, il fait son mouvement selon celle qui reste pressée. Sinon, c'est clair que ça réduit |
|
| |
kepler Débutant
Messages : 13
| Sujet: Re: Engine Dim 22 Avr 2012 - 15:39 | |
| arrg je souffre les gars |
|
| |
kepler Débutant
Messages : 13
| Sujet: Re: Engine Sam 28 Avr 2012 - 15:08 | |
| bonjour, tout d'abord, je vous présente le héros de mon projet créé de toute pièce. Il marche, il saute, il tire une petite de boule de feu, il nage. j'ai essayer d'utiliser les scripts de johny et caly mais mon perso n'a pas dénier bouger un pouce j'ai cinq jours de congés, donc un peu de temps. j'ai décidé après avoir lu les liens et les pistes gentiment mis à ma disposition, que je vais d'abord passer le drap&drop pour creer les mouvements puis le traduire en GML dans un second temps. je vais toujours utiliser les vidéos de notre ami québécois vidéos tutos castlevaniavidéos tutos marioj'utilise la version lite en attendant de faire un choix entre la version pro ou studio, n'hésitez pas à me donner votre avis. Edit: pour les débutants comme moi qui cherchent et qui ne le connaissent pas, ce tuto video en anglais, mais accessible, peut nous aider içiEdit n°2@johny Wessmullerje commence à comprendre ton code j'y vais doucement... en premier lieu tu créer 3 variables dans l'objet du sprite, tu fais "add event"puis "create" et "execute a piece of code" vitesse=5 --> la vitesse, je suppose. droite=1 --> sera utilisé pour un déplacement vers la droite quand le "bouton droit" aura été pressé au dernier step et droite=-1 déplacement vers la gauche quand le bouton gauche aura été préssé au dernier step. hvitesse=0 --> je suppose que c'est lié à la vitesse horizontal : vitesse=5 et -vitesse=-5 ? mais j'ai besoin d'être éclairé else hvitesse=0; est que ça a voir avec un stop ou un truc comme ça ? c'est plutôt bon ? merci |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: Engine Ven 4 Mai 2012 - 10:47 | |
| - kepler a écrit:
en premier lieu tu créer 3 variables dans l'objet du sprite, tu fais "add event"puis "create" et "execute a piece of code"
Oui. - kepler a écrit:
- vitesse=5 --> la vitesse, je suppose.
Oui, tu pourrais mettre directement par exemple hvitesse=5 pour changer ta vitesse, mais l'avantage d'utiliser une variable est si tu veux la changer pendant le jeu, ou si tu veux la changer dans le create pour tester rapidement des valeurs différentes. - kepler a écrit:
- droite=1 --> sera utilisé pour un déplacement vers la droite quand le "bouton droit" aura été pressé au dernier step et droite=-1 déplacement vers la gauche quand le bouton gauche aura été préssé au dernier step.
Non En fait la variable droite sert à savoir laquelle des touches gauche ou droite a été pressée en dernière, donc pas forcément au dernier step. En effet, comme je te l'ai expliqué plus haut, keyboard_check_pressed() ne s'active qu'au déclenchement de la touche. CAD que si tu reste appuyé, ça c'est keyboard_check(). Ainsi, quand droite est égale à -1, la dernière touche des deux que tu as frappée était la gauche, on peut donc raisonnablement penser que si tu t'es bien servi de cet subtilité, ton perso est en train de regarder vers la gauche. Mais ça c'est secondaire, retient que droite te donne la dernière des deux touches sur laquelle tu as tapée. - kepler a écrit:
- hvitesse=0 --> je suppose que c'est lié à la vitesse horizontal : vitesse=5 et -vitesse=-5 ?
Les variables prédéfinies de game maker contrôlent des paramètres : x l'abscisse de ton objet, hspeed la vitesse horizontale, image_xscale l'étirement horizontal du sprite etc., CAD que si tu changes, par exemple x, immédiatement la position de ton objet change. Comme je préfère changer la position du perso en dernier, après avoir bien vérifier qu'il n'y a pas de problèmes de collision et autres, je modifie hspeed à la fin du code, et je crée une variable hvitesse qui va me servir à faire les calculs, sans toutefois modifier le vrai paramètre. Ce n'est donc qu'après tous les calculs que hspeed prendra la valeur hvitesse. Ceci dit, dans le code que tu as, ça n'a pas grand intérêt puisque nous ne gérons pas les collisions. et oui, si vitesse est à 5, -vitesse = -5 - kepler a écrit:
- mais j'ai besoin d'être éclairé else hvitesse=0;
est que ça a voir avec un stop ou un truc comme ça ? Ben vu qu'à la fin du code hspeed prendra la valeur de hvitesse, si hvitesse est à 0 à la fin du code, hspeed sera à 0 et donc l'objet s'arrêtera (horizontalement). Lis les tutos que je t'ai fourni. [edit] Par contre, lorsque tu écris un truc, fais un nouveau post pour qu'on remarque qu'il y a du nouveau. |
|
| |
kepler Débutant
Messages : 13
| Sujet: Re: Engine Lun 7 Mai 2012 - 9:53 | |
| merci, ça m'aide beaucoup ces éclaircissements par contre, j'ai essayé ton code avec mes tiles et sprites: ça fonctionne pas... |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: Engine Lun 7 Mai 2012 - 14:25 | |
| J'ai pas GM là, je ne peux pas tester mon code... Désolé... |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: Engine Lun 7 Mai 2012 - 17:50 | |
| Bon toujours pas testé, mais pdt que je mangeais j'ai eu un flash qui m'a fait revenir sur l'ordi : (en gras les modifs) Dans create vitesse=5; droite=1; hvitesse=0; Dans step if keyboard_check_pressed(vk_left) droite=-1; if keyboard_check_pressed(vk_right) droite=1; if droite==-1 { if keyboard_check(vk_left) hvitesse=-vitesse; else if keyboard_check(vk_right) droite=1; else hvitesse=0; } else { if keyboard_check_pressed(vk_right) hvitesse=vitesse; else if keyboard_check(vk_left) { droite=-1; hvitesse=-vitesse; } else hvitesse=0; } if (hvitesse>0 && sprite_index!=mario_courir_d) sprite_index=mario_courir_d; else if (hvitesse<0 && sprite_index!=mario_courir_g) sprite_index=mario_courir_g; else { if sprite_index!=mario_arret sprite_index=mario_arret; image_xscale=droite; } hspeed=hvitesse; Et sinon, c'est quoi en fait les problèmes ? Tu devrais poster ton gmk pour que quelqu'un les résolve. |
|
| |
kepler Débutant
Messages : 13
| Sujet: Re: Engine Lun 7 Mai 2012 - 19:01 | |
| malheureusement, y a pas d’arrangement.
en même temps coder en aveugle se doit pas être facile...
je t'ai envoyé un mp.
je continu dessayer de comprendre de mon coté. |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: Engine Mer 9 Mai 2012 - 10:52 | |
| Lu Au cas où tu n'avais pas vu, je t'ai mp. Au cas où il y a eu un pb avec la messagerie, je met la partie non privée de l'échange ici : - Citation :
- Ok ça marche mais pour l'instant je ne peux pas trop aller sur GM pendant les deux prochaines semaines.
Et - Citation :
- Et sinon, n'oublie pas de préciser sur le fil les problèmes que tu rencontres, est-ce au niveau du déplacement, des sprites ? Au cas où est-ce que tu as bien remplacé mario_arret par le nom de ton sprite à l’arrêt, mario_courir_d par ton sprite qui court vers la droite et mario_courir_g par le nom de celui vers la gauche ? (bon dsl de te poser cette question mais sait-on jamais)
|
|
| |
kepler Débutant
Messages : 13
| Sujet: Re: Engine Mer 9 Mai 2012 - 10:59 | |
| merci.
je t'ai envoyé un mail le 8 mai en fait, sur ta boite mail, peut etre ne l'a tu pas reçu ? |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: Engine Mer 9 Mai 2012 - 11:03 | |
| Aaaah lol dsl je n'avais pas regardé celle là. Ok j'ai regardé, ben, je vais peut-être faire un effort pour l'ouvrir sur GM cette semaine, mais je ne te promet rien. |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: Engine Ven 11 Mai 2012 - 21:50 | |
| Re, j'ai testé mon code (en testant ton jeu) et j'ai trouvé l'erreur. Elle était dans une faute de frappe, et même en le relisant sur le site je ne l'avait pas détectée, c'est en regardant le comportement du perso que j'ai compris où elle était. Le perso ne bougeait à droite que durant le bref instant où l'on appuyait sur droite. Je te met l'erreur en gras : Dans step if keyboard_check_pressed(vk_left) droite=-1; if keyboard_check_pressed(vk_right) droite=1; if droite==-1 { if keyboard_check(vk_left) hvitesse=-vitesse; else if keyboard_check(vk_right) droite=1; else hvitesse=0; } else { if keyboard_check _pressed(vk_right) hvitesse=vitesse; else if keyboard_check(vk_left) { droite=-1; hvitesse=-vitesse; } else hvitesse=0; } if (hvitesse>0 && sprite_index!=mario_courir_d) sprite_index=mario_courir_d; else if (hvitesse<0 && sprite_index!=mario_courir_g) sprite_index=mario_courir_g; else { if sprite_index!=mario_arret sprite_index=mario_arret; image_xscale=droite; } hspeed=hvitesse; Sinon je t'ai amélioré le code vu que tes sprites à gauche sont les symétriques de tes sprites à droite : - Code:
-
if keyboard_check_pressed(vk_left) droite=-1; if keyboard_check_pressed(vk_right) droite=1;
if droite==-1 { if keyboard_check(vk_left) hvitesse=-vitesse; else if keyboard_check(vk_right) droite=1; else hvitesse=0; } if droite==1 { if keyboard_check(vk_right) hvitesse=vitesse; else if keyboard_check(vk_left)droite=-1; else hvitesse=0; }
if (hspeed!=0) { if sprite_index!=Spr_Heros_marche_d sprite_index=Spr_Heros_marche_d; image_speed=vitesse_image; } else if sprite_index!=Spr_Heros_arret_d sprite_index=Spr_Heros_arret_d; image_xscale=droite;
hspeed=hvitesse; Dans create - Code:
-
vitesse=5; droite=1; hvitesse=0; vitesse_image=0.6; Donc précise bien la nature du problème pour gagner du temps la prochaine fois. Tes sprites allaient trop vite, du coup j'ai modifié image_speed. |
|
| |
kepler Débutant
Messages : 13
| Sujet: Re: Engine Sam 12 Mai 2012 - 10:23 | |
| merci johny d'avoir pris sur ton temps.
ça fonctionne très bien, ce que je vais faire dans dans la journée j'espère , en m'inspirant de ton code, c'est d'ajouter le saut.
|
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: Engine Sam 12 Mai 2012 - 12:49 | |
| De rien, mais ajoute d'abord les collisions si tu veux mon avis. Et finalement fais plutôt ceci - Code:
-
if keyboard_check_pressed(vk_left) droite=-1; if keyboard_check_pressed(vk_right) droite=1;
if droite==-1 { if keyboard_check(vk_left) hvitesse=-vitesse; else if keyboard_check(vk_right) droite=1; else hvitesse=0; } if droite==1 { if keyboard_check(vk_right) hvitesse=vitesse; else if keyboard_check(vk_left) { droite=-1; hvitesse=-vitesse; } else hvitesse=0; }
if (hspeed!=0) { if sprite_index!=Spr_Heros_marche_d sprite_index=Spr_Heros_marche_d; image_index+=vitesse_image; } else if sprite_index!=Spr_Heros_arret_d sprite_index=Spr_Heros_arret_d; image_xscale=droite;
hspeed=hvitesse; Dans create - Code:
-
vitesse=5; droite=1; hvitesse=0; vitesse_image=0.1; Quelqu'un sait pourquoi si je fais image_index+=vitesse_image ça n'a pas le même effet que si je fais image_speed=vitesse_image ? (l'animation est plus rapide) ? |
|
| |
D-z Utilisateur confirmé: Rang *****
Messages : 1611 Localisation : Montpellier
| Sujet: Re: Engine Sam 12 Mai 2012 - 18:47 | |
| Ce n'est pas censé faire de différence, est-tu certain que image_speed = 0 quand tu essayes ? |
|
| |
Johny Wessmuller Utilisateur confirmé: Rang *
Messages : 233
| Sujet: Re: Engine Sam 12 Mai 2012 - 19:01 | |
| Ah oui, pas bête, non pas certain en effet. Bah dans ce cas là, kepler, fais ceci : - Code:
-
if keyboard_check_pressed(vk_left) droite=-1; if keyboard_check_pressed(vk_right) droite=1;
if droite==-1 { if keyboard_check(vk_left) hvitesse=-vitesse; else if keyboard_check(vk_right) droite=1; else hvitesse=0; } if droite==1 { if keyboard_check(vk_right) hvitesse=vitesse; else if keyboard_check(vk_left) { droite=-1; hvitesse=-vitesse; } else hvitesse=0; }
if (hspeed!=0) { if sprite_index!=Spr_Heros_marche_d sprite_index=Spr_Heros_marche_d; image_speed=vitesse_image; } else if sprite_index!=Spr_Heros_arret_d sprite_index=Spr_Heros_arret_d; image_xscale=droite;
hspeed=hvitesse; Dans create - Code:
-
vitesse=5; droite=1; hvitesse=0; vitesse_image=0.6; Et sinon histoire de me rattraper, ce que je te conseille dans les tâches à faire c'est : déplacements horizontaux puis collisions puis gravité puis saut. Enfin gravité et saut presque en même temps parce que c'est plus facile de tester la gravité si ton bonhomme saute. |
|
| |
kepler Débutant
Messages : 13
| Sujet: Re: Engine Sam 12 Mai 2012 - 21:02 | |
| bon pour l'instant, très prudent, j'ai rajouté la gravité. - Code:
-
if place_free(x,y+1){ gravity=0.5; } else { gravity=0;
if keyboard_check_pressed(vk_left) droite=-1; if keyboard_check_pressed(vk_right) droite=1;
if droite==-1 { if keyboard_check(vk_left) hvitesse=-vitesse; else if keyboard_check(vk_right) droite=1; else hvitesse=0; } if droite==1 { if keyboard_check(vk_right) hvitesse=vitesse; else if keyboard_check(vk_left) { droite=-1; hvitesse=-vitesse; } else hvitesse=0; }
if (hspeed!=0) { if sprite_index!=Spr_Heros_marche_d sprite_index=Spr_Heros_marche_d; image_speed=vitesse_image; } else if sprite_index!=Spr_Heros_arret_d sprite_index=Spr_Heros_arret_d; image_xscale=droite;
hspeed=hvitesse;
ensuite j'ai "add event" et je créer une colision avec "obj_sol" - Code:
-
if vspeed>0 and !place_free(x,y+vspeed){ move_contact(270); } vspeed=0; c'est du code récupéré sur un tuto pour être honnête, j'essaye de comprendre la logique de game maker. là où sa va se corser pour moi c'est que tu crée les évènements de déplacement direct dans le script tu passe pas par "add event"... |
|
| |
Contenu sponsorisé
| Sujet: Re: Engine | |
| |
|
| |
| Engine | |
|