| [en cours] collision avec mur intermédiaire... | |
|
|
|
Auteur | Message |
---|
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: [en cours] collision avec mur intermédiaire... Lun 1 Déc 2014 - 18:43 | |
| J'ai un petit soucis Jusqu'à présent j'avais des pièces "ouvertes", donc pas de gestions de collisions, mis à part avec les personnages. Mais j'ai une pièce séparée en deux par un mur. Je ne sais pas comment m'y prendre pour que le personnage s’arrête sans dépasser (ou même "être sur") le mur de séparation. J'ai essayé de jouer sur les attributs "Solid" des objets et personnages, mais sans succès. Je pense que la solution doit être dans la gestion des collisions, mais je en sais pas comment m'y prendre concrètement. Merci d'avance
Dernière édition par chefgeorges le Lun 1 Déc 2014 - 20:44, édité 2 fois |
|
| |
Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: [en cours] collision avec mur intermédiaire... Lun 1 Déc 2014 - 19:57 | |
| D'habitude avec AGS, on le fait plutôt en faisant un trou dans la walkeable area. Je ne sais pas bien comment sont gérés les déplacements dans ton projet, peux-tu nous montrer le code en question ? Tu peux aussi creuser la piste des Edges si tu ne t'en sert pas dans cette pièce, mais ça ne me semble pas miraculeux (ça ne bloquera pas les "regarder" de l'autre coté de la pièce par exemple). Tu peux aussi envisager un immense objet, ou un immense hotspot, couvrant la moitié de la pièce inutilisé et interceptant les clics. Sinon, il faudra intercepter les clics de la pièce par le script. :-/ |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: [en cours] collision avec mur intermédiaire... Lun 1 Déc 2014 - 20:41 | |
| Des trous dans la Walkeable area... C'est là que je me rends compte combien il est difficile d'appréhender la "logique" d'un logiciel ;p C'est surement LA solution tout simple que je cherchais Je regarderais quant même les Edges, pour m'instruire un peu plus Merci Billbis. |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: [en cours] collision avec mur intermédiaire... Lun 1 Déc 2014 - 20:46 | |
| Ah bin non Je viens de tester et il y a un problème : si je fais un trou à, par exemple, 50% du Walkeable Area, mais que je clique dans la 2ème moitié de la pièce (donc après le trou), mon personnage refuse d'avancer Edit: Le code demandé : - Code:
-
function on_mouse_click(MouseButton button) // called when a mouse button is clicked. button is either LEFT or RIGHT { if (IsGamePaused() == 1) // Game is paused, so do nothing (ie. don't allow mouse click) { } else if (button == eMouseLeft) { ProcessClick(mouse.x,mouse.y, mouse.Mode); if (mouse.Mode == eModeWalkto) { player.Walk (mouse.x+GetViewportX(), player.y, eNoBlock, eWalkableAreas); } } else // right-click, so cycle cursor { mouse.SelectNextMode(); } } |
|
| |
galactichobo C'est quoi la Tasse Bleue ?
Nombre de messages : 46
Date d'inscription : 24/11/2014
| Sujet: Re: [en cours] collision avec mur intermédiaire... Lun 1 Déc 2014 - 21:16 | |
| Salut, je suis pas sur de bien comprendre (dur sans images). Mais je crois que tu a du faire un trou dans la deuxième piece et un walkableaera dans la première. D'habitude il faut seulement faire un trou sur les murs et laisser le walkableaera sur les plancher, si il y a un un passage entre les deux pièce tu doit dessiner du walkableaera sur le plancher du passage (pour pouvoir permettre a ton personnage de passer par la pour entrer dans la deuxième pièce.) |
|
| |
hanakin Cliqueur Amateur
Nombre de messages : 492
Age : 59
Localisation : Angers
Date d'inscription : 12/09/2012
| Sujet: Re: [en cours] collision avec mur intermédiaire... Lun 1 Déc 2014 - 21:53 | |
| As-tu essayé de faire 2 zones et d'utiliser ceci: RemoveWalkableArea(2); pour rendre inactive la walkableArea 2 (par exemple) et RestoreWalkableArea(2); pour la rendre valide
si j'ai bien compris tu avances jusqu'au mur et suivant une action tu passes le mur ou le mur est infranchissable et le personnage est d'un coté ou de l'autre du mur suivant une porte prise. _________________ Ce qui est utile à beaucoup l'emporte sur les désirs du petit nombre. ( Spock) |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: [en cours] collision avec mur intermédiaire... Mar 2 Déc 2014 - 10:20 | |
| - hanakin a écrit:
- As-tu essayé de faire 2 zones et d'utiliser ceci: RemoveWalkableArea(2); pour rendre inactive la walkableArea 2 (par exemple)
et RestoreWalkableArea(2); pour la rendre valide Ca ne fonctionne pas non plus Ma Walkeable Aera n'est en fait qu'une simple ligne. Ce qui m'embète, c'est que si je la limite, quand je clique "plus loin", mon perso refuse d'avancer, car ça dépasse la limite de la W.A. En y réfléchissant, je pense que la solution est plus dans le script de déplacement que dans la gestion des collision Illustration (en bleu la W.A. sans trou): |
|
| |
hanakin Cliqueur Amateur
Nombre de messages : 492
Age : 59
Localisation : Angers
Date d'inscription : 12/09/2012
| Sujet: Re: [en cours] collision avec mur intermédiaire... Mar 2 Déc 2014 - 17:57 | |
| As tu essayer avec un hotspot lorsque ton joueur le touche le faire reculer de quelques pixel par exemple. function hHotspot1_WalkOn() { player.Walk (mouse.x+(GetViewportX()-20), player.y, eNoBlock, eWalkableAreas); } Autrement j'ai eu un probleme un peu similaire sur une region roger ne voulait pas marcher dessus j'ai jamais su pourquoi : https://adventuregamestudio.1fr1.net/t2413-region_________________ Ce qui est utile à beaucoup l'emporte sur les désirs du petit nombre. ( Spock) |
|
| |
Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: [en cours] collision avec mur intermédiaire... Mar 2 Déc 2014 - 18:36 | |
| Et la walkeable area comme cela, pourquoi ça ne te convient pas ? En tout cas, il y a plein de solutions intéréssantes. |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: [en cours] collision avec mur intermédiaire... Mar 2 Déc 2014 - 18:48 | |
| Bin justement ça ne me convient pas parce que lorsque je clique après le trou dans la W.A. (dans la partie droite de l'image) le personnage refuse de bouger Ce qui rend le déplacement très frustrant pour un utilisateur. Je ne me suis pas pencher depuis sur le script de déplacement/souris, mais à mon avis que la solution est par là... |
|
| |
galactichobo C'est quoi la Tasse Bleue ?
Nombre de messages : 46
Date d'inscription : 24/11/2014
| Sujet: Re: [en cours] collision avec mur intermédiaire... Mar 2 Déc 2014 - 20:27 | |
| Salut, une petite précision, il me semble avoir lu dans le manuel quelque part que les walkableaera était mieux d’être plus grand qu'un pixel, je sais plus la recommandation 2px ou 4 px je crois (a voir).
Sinon, au lieu d'utilisé une hotspot, moi j’utiliserai plutôt une région. Car la fonction function hHotspot1_WalkOn() fonctionne quand le personnage est dessus le hotspot, ce qui veut dire que le code sera exécuter tant que le personnage est dessus le hotspot.
Mais la fonction function region1_WalksOnto() fonctionne quand le personnage entre dans la région, ce qui veut dire que le code sera exécuter une seul fois (a chaque fois que le personnage entre dans la région). |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: [en cours] collision avec mur intermédiaire... Mer 3 Déc 2014 - 12:44 | |
| Alors oui, une région permet de stopper le personnage, mais dès qu'on re-clique il traverse à nouveau le mur Je continue de penser que la solution est dans le script de déplacement. En fait, AGS refuse d'aller à l'endroit pointé par le curseur car il sait que la W.A. est interrompue avant. EDIT: J'ai tenté ça aussi, mais ça ne fonctionne pas pour le moment car le personnage reste définitivement bloqué. - Code:
-
function repeatedly_execute() { if ((player.Room == 36) && (AreThingsOverlapping(CHEF, 1000))) { player.StopMoving(); } } Détail supplémentaire : j'ai exactement le même problème si je mets l'objet Mur en .Solid et le personnage principale en .Solid également. Là aussi, le perso refuse d'avancer si je clique après l'objet. |
|
| |
galactichobo C'est quoi la Tasse Bleue ?
Nombre de messages : 46
Date d'inscription : 24/11/2014
| Sujet: Re: [en cours] collision avec mur intermédiaire... Mer 3 Déc 2014 - 19:52 | |
| J’essaie de comprendre ce que tu essai de faire mais je suis un peu confus car tu dit sur ton premier message que tu veut que le personnage s’arrête au mur mais après tu dit que si tu click après, il refuse de bouger...? Il faut faire attention avec repeatly exe, si tu n'a pas un moyen (une variable par exemple) qui fait que le code s’exécute une seul fois, AGS peut totalement bloqué le jeu. - Citation :
- j'ai exactement le même problème si je mets l'objet Mur
Je viens de réaliser que ton mur est un objet? Moi j'utilise pas de mur en objet, en fait je le dessine sur le background et avec les WA, je color seulement l'endroit ou on peu marcher... |
|
| |
Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: [en cours] collision avec mur intermédiaire... Mer 3 Déc 2014 - 21:16 | |
| Sinon il y a un espace suspect là : - Code:
-
if (mouse.Mode == eModeWalkto) { player.Walk (mouse.x+GetViewportX(), player.y, eNoBlock, eWalkableAreas); // <- là } Ca devrai être : - Code:
-
if (mouse.Mode == eModeWalkto) { player.Walk(mouse.x+GetViewportX(), player.y, eNoBlock, eWalkableAreas); } |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: [en cours] collision avec mur intermédiaire... Mer 3 Déc 2014 - 22:20 | |
| @Billbis: corrigé mais sans conséquence @galactichobo: je sais pas comment mieux l'expliquer, lol Quelque soit l'endroit ou je clique sur l'écran, mon personnage se déplacera vers la coordonnée x de la souris, avec une coordonnée y fixe. Je veux donc que ça continue à fonctionner comme ça. Sauf que là, si je coupe ma WA, par exemple à partir de 320pxl : si je clique au pixel 320, mon perso se déplace jusqu'à cet endroit, mais si par contre je clique à x=321pxl ou même x=640pxl, mon personnage restera fixe, sans broncher (alors que je voudrais qu'il se déplace quant même, mais en s'arrêtant à x=320pxl, forcément). |
|
| |
filoulefilou Cliqueur Amateur
Nombre de messages : 359
Date d'inscription : 24/05/2010
| Sujet: Re: [en cours] collision avec mur intermédiaire... Mer 3 Déc 2014 - 23:10 | |
| Bonsoir, J'imagine que la solution du IsCollidingWithObject (sur un objet invisible ou bien ton mur) couplé avec un Character.StopMoving() , ça n'a pas fonctionné ? Et mettre deux WA différents, ça change quelque chose ? Ou encore mettre un truc du genre oMur.Solid = 1; en vérifiant bien la Baseline de ton objet. ? Sinon, test un truc du genre : - Code:
-
function room_RepExec() {
if(cPERSO.IsCollidingWithObject(object[0])){ object[0].Solid=true; cPERSO.Move(object[0].X-10, cPERSO.y, eBlock, eAnywhere);}
} cPerso étant ton personnage et object[x] ton objet, ça va de soi |
|
| |
Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: [en cours] collision avec mur intermédiaire... Jeu 4 Déc 2014 - 20:21 | |
| En fait, çà : - Code:
-
else if (button == eMouseLeft) { ProcessClick(mouse.x,mouse.y, mouse.Mode); if (mouse.Mode == eModeWalkto) { player.Walk (mouse.x+GetViewportX(), player.y, eNoBlock, eWalkableAreas); } } Ca devrai être ça plutôt : - Code:
-
else if (button == eMouseLeft) { if (mouse.Mode == eModeWalkto) { player.Walk (mouse.x+GetViewportX(), player.y, eNoBlock, eWalkableAreas); } else { ProcessClick(mouse.x,mouse.y, mouse.Mode); } Sinon la commande player.Walk n'est jamais appelé. et du coup le coup de la WA troué devrai mieux fonctionner je pense. |
|
| |
galactichobo C'est quoi la Tasse Bleue ?
Nombre de messages : 46
Date d'inscription : 24/11/2014
| Sujet: Re: [en cours] collision avec mur intermédiaire... Sam 6 Déc 2014 - 18:28 | |
| - chefgeorges a écrit:
- @galactichobo: je sais pas comment mieux l'expliquer, lol
Quelque soit l'endroit ou je clique sur l'écran, mon personnage se déplacera vers la coordonnée x de la souris, avec une coordonnée y fixe. Je veux donc que ça continue à fonctionner comme ça. Sauf que là, si je coupe ma WA, par exemple à partir de 320pxl : si je clique au pixel 320, mon perso se déplace jusqu'à cet endroit, mais si par contre je clique à x=321pxl ou même x=640pxl, mon personnage restera fixe, sans broncher (alors que je voudrais qu'il se déplace quant même, mais en s'arrêtant à x=320pxl, forcément). Il me semble que ça devrait fonctionner par défaut. Sinon j'utilise pas vraiment getviewport, ca peut venir de la le problème... |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: [en cours] collision avec mur intermédiaire... Lun 8 Déc 2014 - 10:23 | |
| Non, désolé Billbis j'ai essayé (au passage il manqué une } ) mais ça ne change strictement rien. Pareil pour galactichobo, aucune incidence... C'est assez frustrant car je n'arrive pas à comprendre le pourquoi du blocage d'AGS |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [en cours] collision avec mur intermédiaire... Lun 8 Déc 2014 - 12:00 | |
| Et le problème persiste quand tu épaissis la zone ? _________________ 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: [en cours] collision avec mur intermédiaire... Lun 8 Déc 2014 - 20:26 | |
| Étrange... C'est peut-être un cou du bug de valouef. Peux-tu essayer avec AGS 3.4.0 où le bug de pathfinding en ligne droite a été corrigé ? |
|
| |
hanakin Cliqueur Amateur
Nombre de messages : 492
Age : 59
Localisation : Angers
Date d'inscription : 12/09/2012
| Sujet: Re: [en cours] collision avec mur intermédiaire... Lun 8 Déc 2014 - 21:33 | |
| Comme j'ai citer plus haut j'ai eu a peut prêt le même problème que je n'ai résolus qu'en recommençant tout a zéro , mon personnage ne pouvait plus avancer sans aucune raison. Un bug bizarre peut être ?
Précision recommencer la room a zéro pas le jeux entier.. _________________ Ce qui est utile à beaucoup l'emporte sur les désirs du petit nombre. ( Spock) |
|
| |
galactichobo C'est quoi la Tasse Bleue ?
Nombre de messages : 46
Date d'inscription : 24/11/2014
| Sujet: Re: [en cours] collision avec mur intermédiaire... Mar 9 Déc 2014 - 14:12 | |
| J'ai pas eu ce bug la en particulier, mais plein de bug semblable qui semble relié a une entité "corrompu" si on peu dire. Par entité je veux dire personnage, objet ou item. Moi quand j'arrive a un problème du genre, incompréhensible, je garde le même code que j'applique a un autre entité. Dans ton cas, tu pourrais essayer de changer de personnage pour ton player, juste pour voir, si sa fonction ou si sa fait la même chose... |
|
| |
chefgeorges Cliqueur Emérite
Nombre de messages : 502
Date d'inscription : 01/02/2008
| Sujet: Re: [en cours] collision avec mur intermédiaire... Mar 9 Déc 2014 - 15:20 | |
| Le prix 2014 du "Début de solution à un problème frustrant et bizarre" revient à Kitai ! Effectivement, en épaississant la zone de déplacement, le problème disparait. C'est un début Par contre, quid du pourquoi et du comment... NB: il faut que la WA fasse au minimum 3pxl de haut. J'ai tenté de bloquer sur l'axe y le déplacement, en remplaçant player.y par 416 dans le script de déplacement du GS, mais ça ne change rien au fait que le perso ne reste plus en ligne droite. |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [en cours] collision avec mur intermédiaire... Mer 10 Déc 2014 - 0:21 | |
| - chefgeorges a écrit:
- Le prix 2014 du "Début de solution à un problème frustrant et bizarre" revient à Kitai !
Ce n'est pas tout à fait juste, galactichobo a mentionné ce problème lui aussi : - galactichobo a écrit:
- Salut, une petite précision, il me semble avoir lu dans le manuel quelque part que les walkableaera était mieux d’être plus grand qu'un pixel, je sais plus la recommandation 2px ou 4 px je crois (a voir).
Et la remarque de Billbis sur le problème du pathfinding est reliée, puisqu'une solution qu'on avait envisagé pour son module de déplacement à 8 directions était de moduler la coordonnée Y du personnage par 3. Quoi qu'il en soit, heureux que tu aies trouvé une solution à ton problème ! _________________ 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 ! |
|
| |
Contenu sponsorisé
| Sujet: Re: [en cours] collision avec mur intermédiaire... | |
| |
|
| |
| [en cours] collision avec mur intermédiaire... | |
|