|
| Animation hors walkable area + Edge inactif > actif. | |
| | Auteur | Message |
---|
XZS Adepte de la Grande Tasse Bleue
Nombre de messages : 66
Age : 43
Localisation : A porté de fusil de Paris
Date d'inscription : 24/04/2013
| Sujet: Animation hors walkable area + Edge inactif > actif. Mer 24 Avr 2013 - 16:13 | |
| Bonjour à tous et toutes, pour commencer, ceci est mon premier post sur le forum, que je lis cependant depuis quelques temps. Mais, malgré mes recherches sur le forum, je n'ai pas trouvé de messages traitant déjà ces sujets. J'aimerai demander votre aide afin de résoudre deux problèmes que je rencontre : - Lancer une animation personnalisée du personnage principal du jeu, hors d'une "walkable area". - Rendre un "Edge" inactif, puis actif après une certaine action de la part du joueur (mais c'est peut-être pas la meilleure solution ?). Afin de faire au plus clair, voici une image commentée de la scène. Donc, en deux parties, il y a d'abord en rouge ce qui concerne l'animation personnalisée. Mon jeu commence avec le "héros" endormi contre une poubelle, en slip (ben ouais). Il se réveil, puis se lève (tout ça serait scripté). Une fois le héros debout, le jeu commence vraiment. Comment réaliser cette action ?Le problème aussi c'est que le personnage doit se trouver contre la poubelle, qui est hors de la "walkable area". Ensuite, le joueur trouve une clé, qui permet d'entrer dans le batiment sur l'image (il y a une porte fermée normalement). Il faudrait donc que le joueur franchisse le "bottom edge" qui enclencherait le changement de room, de celle actuelle, vers celle de l'intérieur du bâtiment. Mais, si je place mon "bottom edge" au bas de la porte ouverte, le joueur peut aussi le traverser ailleurs dans la room. Comment faire pour que le changement de room n'intervienne qu'une fois que la porte est ouverte et que le joueur franchit le "bottom edge" ?Voilà, je sais que c'est pas mal demander, mais j'aimerai vraiment pouvoir avancer sur ce jeu ! Le script c'est pas mon fort, par contre je réalise tous les graphismes du jeu moi-même (le personnage dans l'image ci-jointe est vite fait, le vrai est bien mieux foutu, rassurez-vous) Merci ! |
| | | Creamy Disciple de la Grande Tasse Bleue
Nombre de messages : 1266
Date d'inscription : 15/10/2007
| Sujet: Re: Animation hors walkable area + Edge inactif > actif. Mer 24 Avr 2013 - 22:30 | |
| Bienvenue XZS. Il est tout à fait possible de déplacer un perso en dehors d'une walkable area avec la commande "eAnywhere". - Code:
-
cEgo.Walk(x, y, eBlock, eAnywhere); Pour jouer une animation spéciale, on peut utiliser la commande "ChangeView" puis "Animate". - Code:
-
cEgo.ChangeView(2); cEgo.Animate(0, 4, eOnce, eBlock); cEgo.ChangeView(1); Dans mon exemple, la loop 0 de la view 2 sera jouée une seule fois, à la vitesse 4. Eblock permet d'interrompre l'action tant que l'animation n'est pas terminée. Ensuite le perso reprend sa vue de marche, ici la view 1. Laisse tomber les "edges". Pour changer de pièce, le plus simple, c'est de mettre un objet "porte" devant un hotspot "entrer". L'objet "porte" disparait lorsque la clé est utilisée dessus, révélant ainsi le hotspot "entrer" qui permet de changer de pièce. Si tout ça ne te parait pas très clair, je te conseille de lire les excellents tutos disponibles sur le site Bonne chance pour ton "very bad trip". |
| | | XZS Adepte de la Grande Tasse Bleue
Nombre de messages : 66
Age : 43
Localisation : A porté de fusil de Paris
Date d'inscription : 24/04/2013
| Sujet: Re: Animation hors walkable area + Edge inactif > actif. Mer 24 Avr 2013 - 23:18 | |
| - Creamy a écrit:
le plus simple, c'est de mettre un objet "porte" devant un hotspot "entrer". L'objet "porte" disparait lorsque la clé est utilisée dessus, révélant ainsi le hotspot "entrer" qui permet de changer de pièce.
Merci Creamy pour l'accueil et ta réponse très rapide et complète ! Je sais déjà scripter pour utiliser une clé sur une porte et l'ouvrir. Cependant, je ne comprends pas bien le "hotspot Entrer". Après quelques recherches sur le forum, j'ai trouvé ici ce code : - Code:
-
function hHotspot1_AnyClick() { if(mouse.Mode == eWalkto){ cEgo.ChangeRoom(4, 994, 630); } } Mais il semble que c'est plus pratique en utilisant une "region" plutôt qu'un "hotspot", si je pige bien. En fait, j'en viens à me demander comment bloquer avec la porte l'accès au hotspot/region, puisque la porte n'est pas un objet "solide" (pas de collision). Comment je pourrai faire ça ? En fait, comment on créé des objets solides avec collision dans AGS ? |
| | | Skippy92 Adepte de la Grande Tasse Bleue
Nombre de messages : 75
Age : 46
Localisation : Bagneux
Date d'inscription : 02/03/2013
| Sujet: Re: Animation hors walkable area + Edge inactif > actif. Jeu 25 Avr 2013 - 10:04 | |
| Tout dépend du comportement attendu. Si tu veux qu'en cliquant sur la porte ouverte, le personnage se déplace jusque là puis change de pièce, ça va, mais il faut ajouter MovePlayer(x, y) pour que le personnage bouge. - Code:
-
function hHotspot1_AnyClick() { if(mouse.Mode == eWalkto) { MovePlayer(500, 200) // mettre les coordonnées de la porte cEgo.ChangeRoom(4, 994, 630); } } Après, je ne suis pas sûr de bien comprendre ce que tu dis quand tu parles de bloquer l'accès. Mais admettons que ce hotspot ne doit être cliquable que quand la porte est ouverte, pas de problème. Tu prévois ceci : - Code:
-
function room_FirstLoad() { hHotspot1.Enabled = false; } Le hotspot est donc désactivé au début du jeu. Puis quand la porte est ouverte, dans l'instruction d'ouverture de la porte, il faut prévoir l'événement inverse. Il y a plusieurs façons d'arriver au même résultat. |
| | | XZS Adepte de la Grande Tasse Bleue
Nombre de messages : 66
Age : 43
Localisation : A porté de fusil de Paris
Date d'inscription : 24/04/2013
| Sujet: Re: Animation hors walkable area + Edge inactif > actif. Jeu 25 Avr 2013 - 12:15 | |
| Salut Skippy92, merci pour ces conseils, je comprends mieux. En fait, pour faire plus clair, j'ai fait des p'tits dessins (j'aime tout expliquer avec des p'tits dessins) En fait, quand je parle de porte "solide", j'aimerai que l'objet Porte puisse bloquer le joueur : En gros, est-ce que l'on peut rendre solide un objet, dans AGS ? Si oui, est-ce que c'est possible d'appliquer ça à un "walk-behind" ? Par exemple, imaginons que j'ai une voiture au milieu du chemin, le joueur peut passer derriere ou devant, mais pas à travers (ce qui est pourtant actuellement le cas avec AGS par defaut) : Voilà, je m'éloigne un peu du sujet d'origine, mais j'envisage maintenant, grace à vous deux, d'autres approches pour résoudre tout ça. |
| | | Skippy92 Adepte de la Grande Tasse Bleue
Nombre de messages : 75
Age : 46
Localisation : Bagneux
Date d'inscription : 02/03/2013
| Sujet: Re: Animation hors walkable area + Edge inactif > actif. Jeu 25 Avr 2013 - 12:41 | |
| D'accord, je comprends mieux. Je pensais que la porte permettait de changer de room, alors que là, on est toujours dans la même room. Il faut que tu fasses deux WalkableArea. La première s'arrêtant à la porte et la deuxième prenant le relai. La deuxième serait désactivée au chargement de la room. Et quand la porte est ouverte, la deuxième WalkableArea s'active. Pour la voiture, il faut juste ne pas mettre de WalkableArea sur la voiture. Voilà ce que ça donne, en reprenant tes images : |
| | | XZS Adepte de la Grande Tasse Bleue
Nombre de messages : 66
Age : 43
Localisation : A porté de fusil de Paris
Date d'inscription : 24/04/2013
| Sujet: Re: Animation hors walkable area + Edge inactif > actif. Jeu 25 Avr 2013 - 12:51 | |
| - Skippy92 a écrit:
Je pensais que la porte permettait de changer de room, alors que là, on est toujours dans la même room.
Non effectivement, ça change de room Mais, je voudrais que le personnage puisse avancer "sur" la zone de la porte, qu'on le voit un peu entrer dans la pièce suivante, avant de faire la changement de room, donc je peux utiliser cette technique dans mon cas aussi. - Skippy92 a écrit:
Pour la voiture, il faut juste ne pas mettre de WalkableArea sur la voiture.
Alors là, c'est tellement pas con que je m'en veux de pas y avoir pensé tout seul ! Merci beaucoup ! Je teste tout ça ce soir si j'ai un peu de temps libre. |
| | | XZS Adepte de la Grande Tasse Bleue
Nombre de messages : 66
Age : 43
Localisation : A porté de fusil de Paris
Date d'inscription : 24/04/2013
| Sujet: Re: Animation hors walkable area + Edge inactif > actif. Jeu 25 Avr 2013 - 18:38 | |
| Bon, tout marche nickel, j'suis très content ! Il me reste à tester l'animation unique, du mec qui se réveille contre la poubelle, hors de la walkable area de base. A ce propos : - Creamy a écrit:
Pour jouer une animation spéciale, on peut utiliser la commande "ChangeView" puis "Animate".
Après moultes essais et erreurs, voici mon script commenté : - Code:
-
// room script file
function room_Load() { aBeachAmb.Play(eAudioPriorityNormal, eRepeat); }
function room_FirstLoad() { hHotspotDoor.Enabled = false; //Comme ca, on peut pas acceder directement a la maison, faut d'abord ouvrir la porte pour acceder a ce hotspot de changement de room cKeum01slip.LockView(KEUM01SLIPWAKE); cKeum01slip.Animate(1, 0, eOnce, eBlock, eForwards); Wait(150); //Je fige le personnage sur une image (anim 1), en attente sur 3 secondes environs. cKeum01slip.Animate(0, 0, eOnce, eBlock, eForwards); //LockView : on change de view, là c'est celle d'intro (anim 0), du mec qui se leve contre la poubelle. //Animate : pour lire la view 0 (mec qui se leve, donc), 0 c'est le delay, eOnce pour attendre la fin de l'execution de cette function, //eForwards pour lire l'animation du début vers la fin. cKeum01slip.UnlockView(); cKeum01slip.LockView(KEUM01SLIPWALK); //Je re-switch vers l'animation normale du mec, parce que sinon il retourne sur l'animation unique //à chaque fois queje reviens dans cette room... cKeum01slip.Say("Bordel... Qu'est-ce que je fous là ? Pourquoi j'suis en slip ?"); //UnlockView : pour retourner à l'animation normale du perso, le jeu commence donc ici, le joueur pouvant déplacer le perso. }
function oR01_DoorClose_UseInv() { if (cKeum01slip.ActiveInventory == iKey) { cKeum01slip.Walk(1000, 460, eBlock, eWalkableAreas); oR01_DoorClose.Visible = false; oR01_DoorOpen.Visible = true; hHotspotDoor.Enabled = true; }}
function hHotspotDoor_WalkOn() //Quand la porte est ouverte, ce HotSpot s'active, quand on va dessus le perso change de room. { cKeum01slip.ChangeRoom(2, 850, 560); } Reste une question en suspend, des fois que quelqu'un d'autre se la poserait : -Est-ce que l'on peut ou pas activé/désactivé un "edge" ? Merci à vous deux, Creamy et Skippy92 ! |
| | | Skippy92 Adepte de la Grande Tasse Bleue
Nombre de messages : 75
Age : 46
Localisation : Bagneux
Date d'inscription : 02/03/2013
| Sujet: Re: Animation hors walkable area + Edge inactif > actif. Jeu 25 Avr 2013 - 21:26 | |
| Je ne pense pas qu'on puisse activer/désactiver un edge à proprement parler. Mais il suffit de ne déclencher une action programmée qu'en fonction de la valeur d'une variable. Ex : - Code:
-
bool edge_left;
function room_FirstLoad() { edge_left = true; }
function room_LeaveLeft() { if (edge_left == true) { ... } } |
| | | Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Animation hors walkable area + Edge inactif > actif. Ven 26 Avr 2013 - 9:24 | |
| Un peu tout a déjà été dit mais deux/trois remarques quand même : - Skippy92 a écrit:
- mais il faut ajouter MovePlayer(x, y) pour que le personnage bouge.
Attention Skippy, j'ai remarqué que tu utilises régulièrement certaines commandes qui proviennent probablement du modèle MI que tu utilises. En effet, la commande MovePlayer n'est pas une commande native d'AGS. Tu peux le remarquer dans le code sur ton message justement : il n'apparaît pas en gris, n'indique aucun texte au survol et ne renvoie vers aucune page d'aide, contrairement à Walk par exemple. - Creamy a écrit:
- Pour jouer une animation spéciale, on peut utiliser la commande "ChangeView" puis "Animate".
Comme l'a suivi XZS dans son code au final, il vaut mieux utiliser la commande LockView pour animer le personnage avec une animation temporaire, et réserver la commande ChangeView à un changement d'animation définitif (personnage qui passe d'enfant à adulte par exemple). - XZS a écrit:
- Reste une question en suspend, des fois que quelqu'un d'autre se la poserait :
-Est-ce que l'on peut ou pas activé/désactivé un "edge" ? Comme le dit Skippy, on ne peut pas vraiment les désactiver. Toutefois on peut redéfinir leurs coordonnées de façon à les rendre inutiles, à l'aide des propriétés Room.BottomEdge, Room.LeftEdge, Room.RightEdge et Room.TopEdge. _________________ 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 ! |
| | | Skippy92 Adepte de la Grande Tasse Bleue
Nombre de messages : 75
Age : 46
Localisation : Bagneux
Date d'inscription : 02/03/2013
| Sujet: Re: Animation hors walkable area + Edge inactif > actif. Ven 26 Avr 2013 - 12:46 | |
| Merci Kitai, je n'ai pas le recul nécessaire pour bien identifier encore ce qui est propre à AGS et ce qui est propre à une commande issue du template. |
| | | Contenu sponsorisé
| Sujet: Re: Animation hors walkable area + Edge inactif > actif. | |
| |
| | | | Animation hors walkable area + Edge inactif > actif. | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |