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

Partagez | 
 

 Faire s'écarter deux personnages l'un de l'autre.

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


Nombre de messages : 500

Date d'inscription : 01/02/2008


MessageSujet: Faire s'écarter deux personnages l'un de l'autre.   Lun 27 Juil 2015 - 21:50

Bonjour,

J'ai un petit soucis de collision entres personnages non-joueur.
Deux personnages suivent le player. J'aurai souhaité qu'il puissent s'écarter l'un de l'autre si ils se superposent.

J'ai tenté un truc très basique mais qui ne fonctionne pas :
Code:
function repeatedly_execute()
{
if ((player.ID == 0)&&(cPlayer2.IsCollidingWithChar(cPlayer3) == 1))
  {
    cPlayer2.Walk(cPGM.x+50, 416, eNoBlock);
    cPlayer3.Walk(cSIMON.x-50, 416, eNoBlock);
  }
}
Le problème c'est que ça créé une espèce de boucle. Tant que les deux personnages sont en contact ils font du moonwalk sur place sourire
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://instagram.com/ichefgeorges
Creamy
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue


Nombre de messages : 1050

Date d'inscription : 15/10/2007


MessageSujet: Re: Faire s'écarter deux personnages l'un de l'autre.   Lun 27 Juil 2015 - 22:19

Tu ne mets pas la propriété "solide" des persos sur ON parce que tes persos évoluent sur la même ligne horizontale, c'est ça?

Je te propose de déclarer une variable et de l'ajouter en condition :
Code:

        function repeatedly_execute()
        {
        if ((player.ID == 0)&&(myCounter == 0)&&(cPlayer2.IsCollidingWithChar(cPlayer3) == 1))
          {
           cPlayer2.Walk(cPGM.x+50, 416, eNoBlock);
           cPlayer3.Walk(cSIMON.x-50, 416, eNoBlock);
           myCounter = 1;
          }
      

         if (cPlayer2.X == cPlayer3.X+100) {
        myCounter = 0;
        }
  }
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://creamy.unblog.fr/
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 2431

Date d'inscription : 01/08/2006


MessageSujet: Re: Faire s'écarter deux personnages l'un de l'autre.   Lun 27 Juil 2015 - 22:50

Je fais juste mon pinailleur pour dire qu'il est plus propre d'utiliser true et false (et déclarer la variable comme booléenne) que 1 et 0 clin d\\\\'oeil

J'explique aussi rapidement le problème que Creamy propose de résoudre en ajoutant une variable : le code de chefgeorges se déclenche lorsque deux personnages se chevauchent à l'écran (cf. IsCollidingWithChar). Donc tant que les deux personnages sont superposés, la commande Walk est déclenchée. Le problème c'est que les personnages ne sont pas séparés instantanément après que cette commande est déclenchée : suivant divers paramètres (le nombre de pixels qui se chevauchent et la vitesse de chacun des personnages) l'éloignement peut prendre plusieurs cycles avant que les personnages cessent d'être superposés. Ainsi, la commande Walk est à nouveau exécutée après sa première exécution, car les personnages se chevauchent toujours. L'effet vicieux de la commande Walk, si je ne m'abuse, c'est qu'elle attend au moins un cycle avant de déplacer effectivement les personnages. Donc à chaque nouveau cycle, la commande Walk est exécutée, ayant pour effet de laisser les personnages sur place jusqu'au prochain cycle, où nécessairement ils seront toujours superposés, et donc la commande à nouveau exécutée. Ad lib.

C'est un problème assez récurrent, donc je pensais qu'il serait bon de l'expliquer en détails.

_________________
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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
chefgeorges
Cliqueur Emérite
Cliqueur Emérite


Nombre de messages : 500

Date d'inscription : 01/02/2008


MessageSujet: Re: Faire s'écarter deux personnages l'un de l'autre.   Mar 28 Juil 2015 - 8:12

@Kitai: c'est bien ce qu'il me semblait ^^

Creamy a écrit:
Tu ne mets pas la propriété "solide" des persos sur ON parce que tes persos évoluent sur la même ligne horizontale, c'est ça?
Tout-à-fait ! sourire

Bonne idée la variable, merci. Ça semble fonctionner... je dis "ça semble" parce que ça parait quelque peu "aléatoire", peut-être dû à la légère pause de la commande follow sourire
Mais c'est satisfaisant. Je voulais faire évoluer le code pour que les perso s'éloigne l'un de l'autre en fonction de leur position l'un par rapport à l'autre. Mais là ils le font ou l'un deux décide de dépasser et le personnage non-joueur et le player. Du coup, je trouve ça plus "naturel".

Je continue à tester la chose clin d\\\\'oeil

NB: par contre, il faut mettre des petits x à if (cPlayer2.x == cPlayer3.x+100 sourire
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://instagram.com/ichefgeorges
chefgeorges
Cliqueur Emérite
Cliqueur Emérite


Nombre de messages : 500

Date d'inscription : 01/02/2008


MessageSujet: Re: Faire s'écarter deux personnages l'un de l'autre.   Mar 28 Juil 2015 - 8:23

Hmm...

Je crois que je n'échapperai pas à un code un peu plus complexe. J'ai encore le moonwalk dans certaines situations. Je vais y réfléchir un peu de mon côté clin d\\\\'oeil

EDIT : c'est difficile à juger, mais finalement je sais pas vraiment si le code fonctionne ou pas...
Je continue mes recherches...
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


Nombre de messages : 1275

Date d'inscription : 10/05/2012


MessageSujet: Re: Faire s'écarter deux personnages l'un de l'autre.   Mar 28 Juil 2015 - 9:03

Sinon tu lances une musique de Michael Jackson a chaque fois que les persos font du Moonwalk.
Si si, c'est aussi une solution.
grand sourire

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
chefgeorges
Cliqueur Emérite
Cliqueur Emérite


Nombre de messages : 500

Date d'inscription : 01/02/2008


MessageSujet: Re: Faire s'écarter deux personnages l'un de l'autre.   Mar 28 Juil 2015 - 10:51

J'ai trouvé la solution, qui une fois de plus est d'une simplicité limpide, et c'est Creamy qui m'a mis sur la voie sourire

Il suffit de dire : quand joueur 1 est le player, Solid = false, et pour players 2 et 3 Solid = true (avec des baseline différentes)

Çà semble fonctionner correctement maintenant ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://instagram.com/ichefgeorges
Creamy
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue


Nombre de messages : 1050

Date d'inscription : 15/10/2007


MessageSujet: Re: Faire s'écarter deux personnages l'un de l'autre.   Mar 28 Juil 2015 - 11:18

Cool  sourire

A titre indicatif, je crois que mon code foire car la commande "Followcharacter" interfère : les persos 2 et 3 se remettent à suivre le joueur avant d'avoir atteint 100 pixels d'écart entre eux. Du coup la variable ne se remet pas à 0 (ou à "false" si tu as mis une booléenne clin d\\\\'oeil)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://creamy.unblog.fr/
Contenu sponsorisé




MessageSujet: Re: Faire s'écarter deux personnages l'un de l'autre.   Aujourd'hui à 8:02

Revenir en haut Aller en bas
 
Faire s'écarter deux personnages l'un de l'autre.
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Cherche personnes pour faire voix (anglophone / japanophone) de personnages de Touhou
» [IMPAYE] Autant faire d'une pierre deux coups...
» les feuilles de personnage (ce que c'est? / faire sa fiche)
» forum chevaliers gris
» questions diverses : convocation/balise/mordrak

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: