|
| Aide pour créer un effet "reflet dans le mirroir" | |
| | Auteur | Message |
---|
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Aide pour créer un effet "reflet dans le mirroir" Mer 29 Oct 2014 - 16:06 | |
| Bonjour, J'ai voulu créer un jolie effet de style dans une pièce, sauf que c'est apparemment plus complexe que dans mon esprit Dans une pièce avec un miroir, je voulais créer un effet de reflet du personnage quand il passe devant. J'ai pensé la chose suivante : créer un autre personnage identique, lui assigné un FollowCharacter, créer un "objet décors" identique au backgound (avec un trou au niveau du miroir), puis jouer sur les baseline. Sauf que ça marche pas très bien Si je mets quelque chose du style cDoublePerso.FollowCharacter(cCHEF, 40, 0); la doublure bouge dans tous les sens à proximité du personnage principal. Si je mets 1 au lieu de 0, je n'ai plus ce problème mais il y a un petit décalage dans le suivi du personnage, et la doublure peut aussi bien être 40pxl derrière que 40pxl devant le personnage. Existe-t-il un moyen de dire à la doublure de suivre strictement, en restant à 40pxl à gauche du personnage ? Je sais qu'il existe une variable FOLLOW_EXACTLY mais elle impose une frame fixe, donc si le personnage se retourne la doublure reste fixe dans l'autre sens |
| | | Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: Aide pour créer un effet "reflet dans le mirroir" Mer 29 Oct 2014 - 16:28 | |
| Easy !(En fait, je n'en sais rien. Je n'ai jamais testé ce module.) |
| | | chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: Aide pour créer un effet "reflet dans le mirroir" Mer 29 Oct 2014 - 16:45 | |
| Ca a l'air cool... sauf que j'ai absolument rien compris, lol En ouvrant la démo 1.1 je me suis pris une bonne grosse gifle de codes... Désolé, mais ça me parait hyper complexe. Je n'ai jamais utilisé de module, je n'ai donc aucune idée sur la manière de procéder. En plus, j'ai absolument pas capté comment fonctionne le module. Merci pour l'info, mais je ne pense pas tester la chose |
| | | Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Aide pour créer un effet "reflet dans le mirroir" Mer 29 Oct 2014 - 19:10 | |
| C'est dommage de te fermer la voie de ce module chefgeorges, parce qu'il accomplit parfaitement ce que tu sembles vouloir faire. Ce qu'il faut faire avec ce module, c'est créer un objet dans ta pièce qui te servira de surface réfléchissante. Le personnage sera reflété sur l'intégralité de la surface dudit objet. Il faut aussi un autre objet, pour signaler le centre de symétrie : dans ton cas tu devrais le placer de façon à ce que son point central se trouve à 20px à gauche du point central-gauche de l'objet qui te sert de miroir (car tu veux apparemment 40px d'écarts entre le personnage et son image reflétée). Enfin il te faut une région qui définira la zone qui déclenche l'apparition du reflet lorsque le personnage se trouve dessus. J'imagine qu'en théorie tu peux mettre une zone qui recouvre l'intégralité de la pièce, mais c'est sous-optimal : arrange-toi pour la faire aussi petite que possible, afin d'éviter à AGS de faire tourner en permanence le code qui génère le reflet. Une fois que tu as ces deux objets et cette région (et que tu as importé le module, bien sûr), tu dois rentrer ces commandes : - Code:
-
// Dans game_start() Mirrors2.AddMirrorChar(cEgo); // Informe que EGO doit être reflété dans le miroir
// Dans room_firstLoad() Mirrors2.NewMirror(oMirror, oCenter, region[1], eSymmetryNone, 1.0, 30.0); // Indique que l'objet "Mirror" sert de surface réfléchissante, que l'objet "Center" est le point de symétrie (situé à 20px sur la gauche dans ton cas), que marcher sur la région 1 déclenche un reflet, et donne une opacité de 1.0 et un facteur d'atténuation du reflet de 30 selon l'éloignement Mirrors2.EnableMirror(oMirror); // Active le miroir (nécessaire) Je n'ai pas ouvert le jeu de démo et je n'ai pas regardé le code en profondeur, donc si je dis des bêtises merci de me corriger. L'idéal serait que monsieurouxx passe dans le coin. _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
| | | Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: Aide pour créer un effet "reflet dans le mirroir" Mer 29 Oct 2014 - 20:37 | |
| EDIT : doublé par Kitai. Le module est un chouia compliqué à utiliser, mais ça devrai être jouable. 1) Télécharge le module en version 2.0. 2) Ouvre le projet exemple. 3) Clic droit sur le script mirrors_2.0 -> export et tu lui donne un petit nom. 4) Ferme le projet démo, ouvre ton jeu. Clic droit sur script -> import script, et choisit le script que tu viens de sauvegarder. 5) Il te faut 4 ou 5 choses pour un miroir : - un "masque" qui couvre le bord du miroir. D'après Monsieur Ouxx, il vaut mieux prévoir large. - un petit objet au définissant le centre du miroir (les tasse sur l'image). Il a un petit sprite mais sera "visible = false;". - Un centre de symétrie de miroir. Pour les miroirs simples, en bas au mileu du miroir devrai suffire. (les croix jaunes sur l'image). Pareil, "visible = false;". - Une région déclencheuse, en bleu ciel sur l'image, définissant quand le mirroires est actif (pour économiser des calculs et limiter les artefacts. - Éventuellement tu peux teinter ton miroir avec une région bonus. 6) Il te faut des personnages miroirs (un par nombre de miroir maximum dans une pièce), j'ai pas bien compris a quel point ils devaient être définit en view ou si ça ne sert pas à grand chose. Mais en fait, comme le montre Kitai, il n'en faut peut être pas. Tu dois pouvoir t'en passer? 7) Puis, dans le script de la room dans les event qui vont bien : - Code:
-
function room_FirstLoad() { Mirrors2.AddMirrorChar(cMirror);
/* import static void NewMirror( Object* mask, //set to null if no mask Object* center, Region* reg, //set to null if mirror always on Mirrors_Symmetries symmetry, float opacity, float distance_attenuation, int x_offset=0, int y_offset=0); */ Mirrors2.NewMirror(oMirror1, oCenter1, region[2], eSymmetryHoriz, 1.0, 50.0, 0, 10); // Joue un peu avec les paramètres finaux. //Étrangement, le premier paramètres est le centre du miroir, le deuxième le centre de symétrie, contrairement à ce que la donc laisse penser...
Mirrors2.EnableMirror(oMirror1); } Bon courage, en tout cas. |
| | | chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: Aide pour créer un effet "reflet dans le mirroir" Jeu 30 Oct 2014 - 15:15 | |
| Alors j'ai essayé avec le module 1.1 (je n'ai pas AGS3.3, donc je peux pas ouvrir la version 2.0 du module) Mais ça bug et je comprends pas de quoi il me cause... :'( lol EDIT: Bon il me rend tellement fou que je fais une fixette dessus, lol. Donc j'essaie encore te toujours mais voilà ce qui apparait comme bug à l'exécution du jeu : |
| | | Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: Aide pour créer un effet "reflet dans le mirroir" Ven 31 Oct 2014 - 11:57 | |
| En toute honneteté, le module 1.1 et le module 2.0 ne sont pas codées pareils, et je ne ferai pas confiance à la version 1.1. Essaye d'envoyer un mp à Monsieur Ouxx (il à même deux pseudos sur le forum francophone) si tu veux vraiment y arriver. Mais sinon, tu doit pouvoir t'en sortir sans module, hein. Ta solution me semblait acceptable, et sinon tu peux jouer avec les drawing surffaces et les dynamic sprites. |
| | | chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: Aide pour créer un effet "reflet dans le mirroir" Ven 31 Oct 2014 - 12:22 | |
| - Code:
-
Mais sinon, tu doit pouvoir t'en sortir sans module, hein. Ta solution me semblait acceptable, et sinon tu peux jouer avec les drawing surffaces et les dynamic sprites. J'essaie de trouver aussi comment coder un FollowCharacter moi-même, histoire de pouvoir modifier les paramètres. Il me faudrait juste pouvoir utiliser la variable FOLLOW_EXACTELY avec une view et non une frame |
| | | Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Aide pour créer un effet "reflet dans le mirroir" Ven 31 Oct 2014 - 16:35 | |
| J'ai utilisé cet effet dans un projet personnel, si ça t'intéresse. J'avais aussi proposé à Vinkei de recourir à ma méthode, qui n'est finalement pas éloignée de celle du module de Monsieur OUXX ni de celle que tu poursuis. J'utilisais moi aussi une région pour déterminer quand commencer et quand cesser d'exécuter le code. Le code en question se chargeait, à chaque cycle de jeu, de dessiner l'image du joueur sur un objet du décor, lui-même recouvert par un objet-cadre. Ce n'est pas très compliqué à faire, mais l'effet n'est pas aussi propre que ce qu'obtient le module Mirrors. En toute honnêteté par contre je doute que la méthode du FollowCharacter soit viable, mais peut-être que je me trompe ! _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
| | | chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: Aide pour créer un effet "reflet dans le mirroir" Dim 2 Nov 2014 - 20:28 | |
| - Kitai a écrit:
- J'ai utilisé cet effet dans un projet personnel, si ça t'intéresse. J'avais aussi proposé à Vinkei de recourir à ma méthode, qui n'est finalement pas éloignée de celle du module de Monsieur OUXX ni de celle que tu poursuis.
Woui Merki De toute façon, ce module est un peu trop "sophistiqué" pour mon jeu ;p d'autant que c juste pour un petit effet visuel sans lien avec un élément de gameplay |
| | | Contenu sponsorisé
| Sujet: Re: Aide pour créer un effet "reflet dans le mirroir" | |
| |
| | | | Aide pour créer un effet "reflet dans le mirroir" | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |