Forum d'entraide à la création de jeux d'aventure
 
PortailAccueilFAQRechercherS'enregistrerMembresConnexion

Partagez | 
 

 [résolu] bug déplacement player avec room de +640 de large.

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
chefgeorges
Cliqueur Emérite
Cliqueur Emérite
avatar

Nombre de messages : 501

Date d'inscription : 01/02/2008


MessageSujet: [résolu] bug déplacement player avec room de +640 de large.   Ven 21 Mar 2014 - 19:35

Bonjour et désolé pour ce titre mais je ne voyais pas comment exprimer mon problème en une phrase :'(

Dans mon jeu (dans le niveau au Journal le Herald Harold) a un moment le personnage avance jusqu'à une région et là la caméra se déplace pour se caler sur un dialogue entres deux personnages. Voici le code :

Code:
function region1_Arrive()
{
cGeorges.Walk(765, 416, eNoBlock);
while (cGeorges.x < 764) {
SetViewport(GetViewportX() +5, 0);
Wait(1);}

(dialogues...)

while (GetViewportX()> 475) {
  SetViewport(GetViewportX() -5, 0);
Wait(1);}
ReleaseViewport();
}

Tout fonctionnait à merveille. Sauf que depuis que j'ai modifié le GlobalScript pour que le player avance dans la direction du clic de souris, le code précédent bug ! Le player effectue un demi-tour dès qu'il arrive sur la région triste

Voici le code du GlobalScript :
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, player.y, eNoBlock, eWalkableAreas);
  }
  }
  else // right-click, so cycle cursor
  {  
   mouse.SelectNextMode();
  }
}

Mon avis c'est la redondance de la fonction "player.walk" (en cliquant je dis que le player dois aller aux coordonnées mouse.x et mouse.y, et en même temps je lui demande d'aller à des coordonnées différentes). Mais je sèche sur la résolution du problème...

 pleure


Dernière édition par chefgeorges le Sam 22 Mar 2014 - 14:17, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://instagram.com/ichefgeorges
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
avatar

Nombre de messages : 1275

Date d'inscription : 10/05/2012


MessageSujet: Re: [résolu] bug déplacement player avec room de +640 de large.   Sam 22 Mar 2014 - 9:35

Je ne sais pas trop comment t'aider...
Tu aurais bien pu mettre un ClaimEvent, mais malheureusement on ne peut pas en mettre dans ce genre de fonctions. perplexe
Sinon faire le 1er Walk en mode eBlock...

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
Atavismus
Grand Cliqueur Royal
Grand Cliqueur Royal
avatar

Nombre de messages : 1743

Localisation : France

Date d'inscription : 27/01/2014


MessageSujet: Re: [résolu] bug déplacement player avec room de +640 de large.   Sam 22 Mar 2014 - 10:47

Moi non plus, surtout que je ne suis pas sûr de comprendre.
Si c'est ce que je crois, j'ai une éventuelle solution un peu bourrin : un booléen global qui conditionnerait le player.Walk
Tu vois ce que je veux dire ?
Les autres, ça vous parait une idée correcte ?

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://store.steampowered.com/app/367110/
chefgeorges
Cliqueur Emérite
Cliqueur Emérite
avatar

Nombre de messages : 501

Date d'inscription : 01/02/2008


MessageSujet: Re: [résolu] bug déplacement player avec room de +640 de large.   Sam 22 Mar 2014 - 12:08

Je précise que c'est bien la ligne :
Code:
   player.Walk (mouse.x, player.y, eNoBlock, eWalkableAreas);
qui cause problème, car si je l'enlève ça fonctionne.

Autre précision : si j'enlève tout le code ci-dessus dans function region1_Arrive() et bien ça continue à bugger ! Il y aurait donc un blocage avec les régions ?? étrange...


EDIT : ne pas en tenir compte, la vrai source du problème est surement en-dessous clin d\\\\'oeil


Dernière édition par chefgeorges le Sam 22 Mar 2014 - 12:14, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://instagram.com/ichefgeorges
chefgeorges
Cliqueur Emérite
Cliqueur Emérite
avatar

Nombre de messages : 501

Date d'inscription : 01/02/2008


MessageSujet: Re: [résolu] bug déplacement player avec room de +640 de large.   Sam 22 Mar 2014 - 12:13

RETIF' ! sourire

Je crois avoir compris le noeud du problème ! En fait cette pièce est plus large (2 fois 640, 1280), et le perso ne bug pas en arrivant dans la région, mais tout simplement le jeu semble ne pas comprendre que la souris puisse pointer au-delà de 640 sourire

Je suis pratiquement sûr de mon fait, mais je n'ai aucune idée du pourquoi de ce problème ni de comment le résoudre ;p
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://instagram.com/ichefgeorges
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 2539

Date d'inscription : 01/08/2006


MessageSujet: Re: [résolu] bug déplacement player avec room de +640 de large.   Sam 22 Mar 2014 - 13:35

chefgeorges (mes crochets) a écrit:
Voici le code du GlobalScript :
Code:
 // [ ... ]
    player.Walk (mouse.x, player.y, eNoBlock, eWalkableAreas);

chefgeorges a écrit:
En fait cette pièce est plus large (2 fois 640, 1280), et le perso ne bug pas en arrivant dans la région, mais tout simplement le jeu semble ne pas comprendre que la souris puisse pointer au-delà de 640 sourire

Je suis pratiquement sûr de mon fait, mais je n'ai aucune idée du pourquoi de ce problème ni de comment le résoudre ;p
Solution :
Code:
// [ ... ]
    player.Walk (mouse.x+GetViewportX(), player.y, eNoBlock, eWalkableAreas);
Ce qui est marrant c'est que tu utilises déjà GetViewportX dans les boucles que tu as mises dans la fonction correspondant à la région clin d\\\\'oeil

Par ailleurs la gestion des clics dans ton script global me dérange un peu sur le principe, parce que dans le cas où on clique en mode Déplacement tu appelles d'abord ProcessClick avec puis tu déplaces le personnage aux coordonnées du clic. Vu que généralement ProcessClick ne déclenche aucune action lorsqu'on lui passe le mode Déplacement ça ne devrait jamais poser problème, mais bon voilà, c'est bon de garder en tête que tu pourrais théoriquement avoir deux événements (celui correspondant à ProcessClick d'une part et le déplacement d'autre part) qui se déclencheraient lors d'un clic.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php En ligne
chefgeorges
Cliqueur Emérite
Cliqueur Emérite
avatar

Nombre de messages : 501

Date d'inscription : 01/02/2008


MessageSujet: Re: [résolu] bug déplacement player avec room de +640 de large.   Sam 22 Mar 2014 - 14:16

Wouah ! Kitai tu es définitivement mon idole  chou lol

Ça fonctionne parfaitement. J'avais imaginais cette solution mais sans penser à GetViewport sourire

(NB: Par contre, j'ai pas tout capté concernant ton explication sur ProcessClick)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://instagram.com/ichefgeorges
Contenu sponsorisé




MessageSujet: Re: [résolu] bug déplacement player avec room de +640 de large.   

Revenir en haut Aller en bas
 
[résolu] bug déplacement player avec room de +640 de large.
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Pose Player [Avec 2 sims]
» [Résolu] Impossible d'installer FSX avec win 7 64 bits!!!
» [Résolu] Corpsejack Menace + Créatures avec Marqueurs
» [résolu] Cette fois c'est avec le neuf que ca bloque...
» [Résolu] Créer des costumes avec des autocollants.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: CREATION DE JEUX :: Questions / Réponses-
Sauter vers: