Forum d'entraide à la création de jeux d'aventure
 
PortailPortail  AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
-55%
Le deal à ne pas rater :
Friteuse sans huile – PHILIPS – Airfryer HD9200/90 Série 3000
49.99 € 109.99 €
Voir le deal

 

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

Aller en bas 
4 participants
AuteurMessage
chefgeorges
Cliqueur Emérite
Cliqueur Emérite
chefgeorges


Nombre de messages : 502

Date d'inscription : 01/02/2008


Faire s'écarter deux personnages l'un de l'autre. Empty
MessageSujet: Faire s'écarter deux personnages l'un de l'autre.   Faire s'écarter deux personnages l'un de l'autre. EmptyLun 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
http://instagram.com/ichefgeorges
Creamy
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Creamy


Nombre de messages : 1266

Date d'inscription : 15/10/2007


Faire s'écarter deux personnages l'un de l'autre. Empty
MessageSujet: Re: Faire s'écarter deux personnages l'un de l'autre.   Faire s'écarter deux personnages l'un de l'autre. EmptyLun 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
http://creamy.unblog.fr/
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


Faire s'écarter deux personnages l'un de l'autre. Empty
MessageSujet: Re: Faire s'écarter deux personnages l'un de l'autre.   Faire s'écarter deux personnages l'un de l'autre. EmptyLun 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
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
chefgeorges
Cliqueur Emérite
Cliqueur Emérite
chefgeorges


Nombre de messages : 502

Date d'inscription : 01/02/2008


Faire s'écarter deux personnages l'un de l'autre. Empty
MessageSujet: Re: Faire s'écarter deux personnages l'un de l'autre.   Faire s'écarter deux personnages l'un de l'autre. EmptyMar 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
http://instagram.com/ichefgeorges
chefgeorges
Cliqueur Emérite
Cliqueur Emérite
chefgeorges


Nombre de messages : 502

Date d'inscription : 01/02/2008


Faire s'écarter deux personnages l'un de l'autre. Empty
MessageSujet: Re: Faire s'écarter deux personnages l'un de l'autre.   Faire s'écarter deux personnages l'un de l'autre. EmptyMar 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
http://instagram.com/ichefgeorges
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Billbis


Nombre de messages : 1346

Date d'inscription : 10/05/2012


Faire s'écarter deux personnages l'un de l'autre. Empty
MessageSujet: Re: Faire s'écarter deux personnages l'un de l'autre.   Faire s'écarter deux personnages l'un de l'autre. EmptyMar 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
http://nothingaboutthedog.blogspot.fr/
chefgeorges
Cliqueur Emérite
Cliqueur Emérite
chefgeorges


Nombre de messages : 502

Date d'inscription : 01/02/2008


Faire s'écarter deux personnages l'un de l'autre. Empty
MessageSujet: Re: Faire s'écarter deux personnages l'un de l'autre.   Faire s'écarter deux personnages l'un de l'autre. EmptyMar 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
http://instagram.com/ichefgeorges
Creamy
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Creamy


Nombre de messages : 1266

Date d'inscription : 15/10/2007


Faire s'écarter deux personnages l'un de l'autre. Empty
MessageSujet: Re: Faire s'écarter deux personnages l'un de l'autre.   Faire s'écarter deux personnages l'un de l'autre. EmptyMar 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
http://creamy.unblog.fr/
Contenu sponsorisé





Faire s'écarter deux personnages l'un de l'autre. Empty
MessageSujet: Re: Faire s'écarter deux personnages l'un de l'autre.   Faire s'écarter deux personnages l'un de l'autre. Empty

Revenir en haut Aller en bas
 
Faire s'écarter deux personnages l'un de l'autre.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Calculer la distance entre deux personnages
» Faire déplacer un groupe de personnages
» recherche des personnages
» Choix des personnages
» Walk to personnages

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: