Un jeu 2D très simple :
Dans la partie gauche de l’écran sont placés 9 objets vides qui représentent des positions. Chaque objet possède un trigger et un identifiant (Int).
Dans la partie droite de l’écran sont instanciés à des positions aléatoire des objets (Sprites) représentant des formes géométriques et possédant un collider ainsi qu’un identifiant (Int).
Les « Sprites » doivent être déplacés à la position leur correspondant dans la partie gauche de l’écran par Drag&Drop.
Le problème qui m’occupe est celui-ci :
Lorsque le joueur clique sur un premier objet, un Timer doit démarrer pour s’arrêter lorsque tous les objets sont bien placés à gauche de l’écran.
Pour ce faire, chaque objet à déplacer passe sa variable booléenne « isTiming » à True dans sa fonction « OnMouseDown ».
Dans le script « GameManager » je crée une boucle dans la fonction « Update » qui vérifie si l’un des objets à modifié la valeur de sa variable « isTiming ». Si c’est le cas, le tirer démarre.
Mais voilà ! Ce Timer ne démarre jamais.
Extrait du GameManager :
Code : Tout sélectionner
public GameObject [] stucks;
public Text timeText;
void Start () {
StucksSpawner ();
Debug.Log ("Start : " + elapsedTime);
Debug.Log (timerActived);
}
void FixedUpdate () {
for (int i = 0; i < nbStucks; i++) {
if (stucks [i].GetComponent<MoveStuck> ().isTiming) {
timerActived = true;
Debug.Log (timerActived);
Debug.Log ("'isTiming' est à True " + stucks [i].name + ": " + elapsedTime + " secondes.");
}
}
if (timerActived) {
StartTimer ();
}
timeText.text = elapsedTime.ToString ("F2");
}
void StartTimer () {
elapsedTime = 0.0f;
elapsedTime += Time.fixedDeltaTime;
Debug.Log ("StartTimer : " + elapsedTime);
}
Code : Tout sélectionner
public bool isTiming = false;
public bool isDragging = false;
void OnMouseDown () {
isTiming = true;
screenPoint = Camera.main.WorldToScreenPoint (transform.position);
isDragging = true;
//Debug.Log ("Objet cliqué et 'isTiming' à True");
}