Forum d'entraide à la création de jeux d'aventure
 
PortailAccueilFAQRechercherS'enregistrerMembresConnexion
Autopassion.net le site dédié à l'automobile créé par ses utilisateurs
Partagez | 
 

 [Resolu] Probleme FollowCharacter

Aller en bas 
AuteurMessage
Thebroch
Cliqueur Emérite
Cliqueur Emérite
avatar

Nombre de messages : 599

Age : 18

Localisation : Vendée

Date d'inscription : 23/07/2015


MessageSujet: [Resolu] Probleme FollowCharacter    Jeu 14 Juin 2018 - 18:41

Bonjour, sourire

En utilisant la fonction :

Code:
Character.FollowCharacter(Character* presoasuivre, optional int dist,
                          optional int delai)

je me suis rendu compte que les "suiveurs" passent régulièrement devant le "meneur", comment faire pour qu'il reste derrière ?

_________________
Le café au bois ça consiste à moudre une cafetière et à la mettre dans des copeaux de bois.


Dernière édition par Thebroch le Ven 15 Juin 2018 - 0:17, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://poetica-production.webnode.fr
valoulef
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 1546

Age : 29

Localisation : Condate

Date d'inscription : 01/08/2011


MessageSujet: Re: [Resolu] Probleme FollowCharacter    Jeu 14 Juin 2018 - 22:28

Il faudrait donc donner un ordre pour que les suiveurs arrêtent de suivre le meneur au moment où ils se trouvent à une certaine distance de lui.

D'après ce que tu m'as dit par ailleurs, et sauf erreur de ma part, le personnage à suivre se déplace uniquement vers la gauche ou vers la droite, c'est à dire sur l'axe x. Si tu n'as que deux personnages suiveurs, tu peux facilement individualiser la consigne. En gros il va falloir vérifier dans quelle direction le personnage se déplace, et à quelle distance les deux autres sont de lui sur l'axe x. Dès qu'il se retrouvent à une distance donnée, ils cessent de le suivre.

Voici ma proposition, on peut sûrement faire plus simple et plus élégant (notamment il y a peut-être une manière plus simple de déterminer la direction du déplacement, et on pourrait faire plus souple pour généraliser à d'autres suiveurs potentiels), et je ne sais même pas si ça va fonctionner, mais bon c'est toujours mieux que rien (ou pas) ^^ :

Code:
bool X1;  
int DirectionDeplacement;
int egoX;
//Variables en haut du Global_Script (ou variables globales)

function repeatedly_execute (){
    
    //Déterminons d'abord la direction de déplacement du personnage
    if (player.Moving){
        if (!X1) {
            egoX = player.x; //On note la coordonnée x du joueur à un instant T1
            X1 = true; //On indique que la valeur a été relevée, afin qu'elle ne soit pas réinitiallisée à la prochaine session de jeu
        }
        else { //Si la coordonée x a été relevée à la session précédente (ou avant ça), alors on va la comparer à la coordonnée x actuelle (sachant que le personnage s'est peut-être déplacé depuis)
               if (egoX > player.x) { //Si la valeur x relevée tout à l'heure est supérieure à la coordonnée x actuelle du personnage...
                   DirectionDeplacement = 1; //Alors le personnage se déplace vers la gauche (que l'on notera arbitrairement 1)
                   X1 = false; //On réinitialise X1 pour permettre de nouvelles mesures ultérieures.
               }
               else if (egoX < player.x) { //Sinon, si la valeur x relevée tout à l'heure est inférieure à la coordonnée actuelle du personnage...
                   DirectionDeplacement = 2; //Alors le personnage se déplace vers la droite (que l'on note 2)
                   X1 = false;
               }
               //Note : Si le joueur est à la même coordonée que celle relevée à l'instant T1, c'est qu'il n'a pas eu le temps de se déplacer depuis la session précédente (selon sa vitesse), une nouvelle vérification sera faite à la session suivante pour déterminer sa direction
    }
    
    if ((perso1.Moving)||(perso2.Moving)){ //Si au moins un des deux suiveurs potentiels se déplacent actuellement ("perso1/perso2" = le nom de script des suiveurs)
        int DistanceMin = 10; //On détermine une distance minimale à laquelle ils devront se ternir du joueur
        if (DirectionDeplacement == 1){ //Si le joueur se déplace à gauche...
            if ((player.x - perso1.x) >= (0 - DistanceMin)) perso1.FollowCharacter(null); //...et si perso1 est à DistanceMin ou plus près du joueur, alors il s'arrête de le suivre
            if ((player.x - perso2.x) >= (0 - DistanceMin)) perso2.FollowCharacter(null); //idem perso2
        }        
        else if (DirectionDeplacement == 2){ //Idem si le joueur se déplace à droite
            if ((player.x - perso1.x) <= (DistanceMin)) perso1.FollowCharacter(null);
            if ((player.x - perso2.x) <= (DistanceMin)) perso2.FollowCharacter(null);
        }
    }
    
    else if (!player.Moving) DirectionDeplacement = 0; //Si le personnage ne se déplace plus, alors il ne se dirige plus ni vers la gauche, ni vers la droite
}

Note : Si ça ne fonctionne pas, essaye de remplacer les commandes persoX.FollowCharacter(null); par persoX.StopMoving();, l'inconvénient éventuel étant qu'ils s'arrêteront même s'ils étaient en train de se déplacer pour une autre raison que suivre le personnage jouable.

Note 2 : Il y a sûrement plein d'erreurs de ";" ou de parenthèses ou d'accolade ou autre boulette de ma part, si jamais tu as une erreur à la compilation que tu n'arrive pas à résoudre, n'hésite pas à me le signaler.

_________________
"Je ne suis point cet assemblage de membres que l’on appelle le corps humain ; je ne suis point un air délié et pénétrant répandu dans tous ces membres ; je ne suis point un vent, un souffle, une vapeur, ni rien de tout ce que je puis feindre et m’imaginer, puisque j’ai supposé que tout cela n’était rien, et que, sans changer cette supposition, je trouve que je ne laisse pas d’être certain que je suis quelque chose."

René Descartes
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Thebroch
Cliqueur Emérite
Cliqueur Emérite
avatar

Nombre de messages : 599

Age : 18

Localisation : Vendée

Date d'inscription : 23/07/2015


MessageSujet: Re: [Resolu] Probleme FollowCharacter    Ven 15 Juin 2018 - 0:17

It's work thank you !

_________________
Le café au bois ça consiste à moudre une cafetière et à la mettre dans des copeaux de bois.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://poetica-production.webnode.fr
Contenu sponsorisé




MessageSujet: Re: [Resolu] Probleme FollowCharacter    

Revenir en haut Aller en bas
 
[Resolu] Probleme FollowCharacter
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [RESOLU] Probleme avec mon mir:ror :(
» [Résolu]probleme alicebox
» [RESOLU] Installer opennab probleme
» [RESOLU] Oreille bloqué et pas de son
» Petit probleme [Pandawa eau lvl 43]

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: