[Résolu] [MY] Condition if ou boucle while qui s'exécute Frame par Frame

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Litorax
Messages : 67
Inscription : 07 Juin 2017 14:59

[Résolu] [MY] Condition if ou boucle while qui s'exécute Frame par Frame

Message par Litorax » 08 Jan 2018 20:46

Salutations ! Je travaille sur un jeu de course de voitures qui s'exécute au coup par coup (on se déplace sur une grille et on choisit sa position). Mais pour passer au tour du joueur suivant je souhaite attendre que le déplacement du joueur se termine. J'appelle donc juste avant de passer au tour du joueur 2 un fonction IsMovementFinished1(). Cette fonction est créée ainsi:

Code : Tout sélectionner

function IsMovementFinished1 () {
	if (SpritePlayer1.transform.position != Destination1.transform.position) {
		IsMovementFinished1();
	}
}
Évidemment c'est la boucle infinie assurée... si la condition est remplie. Ce que j'aimerais, c'est trouver un moyen d'attendre une frame avant de réexécuter cette fonction, afin de laisser le temps au personnage d'avancer. J'ai essayé avec des boucles while mais la boucle s'exécute en une frame, donc le personnage n'avance pas... Merci de m'aider !
Dernière édition par Litorax le 10 Jan 2018 21:53, édité 2 fois.
Pourquoi essayer de comprendre si on ne sait pas ce que l'on cherche ?

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6220
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [MY] Condition if ou boucle while qui s'exécute Frame par Frame

Message par boubouk50 » 09 Jan 2018 10:19

Salut,
Il te faut utiliser une coroutine.
<Tu pourrais le faire dans un Update () avec un if, puisque l'Update () se lance à chaque frame, cela te fait donc une sorte de boucle.>
Ça se lance avec StartCoroutine () et attend avec une YieldInstruction (pour ton cas: WaitForEndOfFrame)

Tu trouveras tout ce qu'il te faut sur le forum (et dans les exemples de la doc) pour t'aider à créer cette coroutine.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Litorax
Messages : 67
Inscription : 07 Juin 2017 14:59

Re: [MY] Condition if ou boucle while qui s'exécute Frame par Frame

Message par Litorax » 10 Jan 2018 21:48

Merci ! Je crois que j'ai compris le principe des coroutines, mais comment faire pour faire une coroutine qui teste si le joueur est arrivé

Code : Tout sélectionner

if (SpritePlayer1.transform.position != Destination1.transform.position) {

}
et si il n'est pas arrivé passer une frame et relancer la coroutine jusqu'à ce que le joueur soit arrivé ?

Code : Tout sélectionner

function IsMovementFinished1(){
	if (SpritePlayer1.transform.position != Destination1.transform.position) {
	yield WaitForEndOfFrame();
	yield StartCoroutine("IsMovementFinished1");
	}
}
Sachant que j'ai lancé la coroutine avec yield StartCoroutine("IsMovementFinished1");

Qu'est ce que je dois mettre dans ma funtion IsMovementFinished1 ?
Pourquoi essayer de comprendre si on ne sait pas ce que l'on cherche ?

Litorax
Messages : 67
Inscription : 07 Juin 2017 14:59

Re: [Résolu - MY] Condition if ou boucle while qui s'exécute Frame par Frame

Message par Litorax » 10 Jan 2018 21:53

En fait en schématisant ce que je voulais faire j'ai trouvé désolé du dérangement, le précédent script était parfait ^^
Pourquoi essayer de comprendre si on ne sait pas ce que l'on cherche ?

Répondre

Revenir vers « Scripting »