Page 1 sur 1
Impossible de faire une boucle d'activation de Game Objects
Publié : 29 Mai 2022 18:08
par Matocs
Bonjour a tous , voici mon problème , je voulais faire en sorte que mon personnage cligne des yeux de temps en temps donc pour ce faire j'ai d'abord créer une fonction Blink :
Code : Tout sélectionner
void Update()
{
if (Input.GetKeyDown(KeyCode.Z))
{
print("blink");
Blink();
}
}
IEnumerator Blink()
{
yeux1.SetActive(true);
yield return new WaitForSeconds(1);
yeux1.SetActive(false);
}
j'ai donc voulu voir si elle fonctionnais en l'assignant a Z sauf que rien ne se passe la variable "yeux1 reste en false et ne passe pas en true puis en false au bout de 1 secondes a chaque fois que j'appuis sur Z.
J'ai également essayé de creer une bool "can_blink" et utiliser un while (can_blink == true){Blink()}
sauf que cela fait crash unity.
Merci d'avance de votre aide
Re: Impossible de faire une boucle d'activation de Game Objects
Publié : 29 Mai 2022 18:16
par Matocs
Code : Tout sélectionner
void Update()
{
if (Input.GetKeyDown(KeyCode.Z))
{
test1 = !test1;
}
while (test1 == true)
{
print("test");
}
}
J'ai voulu faire une boucle de test et celle ci aussi fait crash mon éditeur je ne comprends pas pourquoi
Re: Impossible de faire une boucle d'activation de Game Objects
Publié : 29 Mai 2022 18:55
par Max
Bonjour,
ta fonction
IEnumerator Blink() est une coroutine et donc son appel doit se faire normalement par le biais de
StartCoroutine().
En suite,
Matocs a écrit : ↑29 Mai 2022 18:16
ça jamais. Tu bloque l'
Update qui reste coincé dans une boucle infini, se qui bloque toute ton application, d’où le crash.
Revoir à quoi correspond les
callback d'Unity pour mieux cerner leurs rôles.
Re: Impossible de faire une boucle d'activation de Game Objects
Publié : 30 Mai 2022 00:54
par Matocs
ducoup je peux faire comment pour réaliser mon projet ?
en gros je souhaite que yeux 1 passe de actif a non actif avec 1 secondes entre les deux a chaque fois que la fonction blink est apellée
Re: Impossible de faire une boucle d'activation de Game Objects
Publié : 30 Mai 2022 02:25
par Matocs
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class player_facial_animations : MonoBehaviour
{
[Header("Bouches")]
[Space(10)]
public GameObject bouche1;
public GameObject bouche2;
public GameObject bouche3;
public GameObject bouche4;
public GameObject bouche5;
public GameObject bouche6;
public GameObject bouche7;
public GameObject bouche8;
public GameObject bouche9;
public GameObject bouche10;
public GameObject bouche11;
public GameObject bouche12;
public GameObject bouche13;
public GameObject bouche14;
public GameObject bouche15;
public GameObject bouche16;
public GameObject bouche17;
[Space (10)]
[Header("Yeux")]
public GameObject yeux1;
public GameObject yeux2;
public GameObject yeux3;
public GameObject yeux4;
public GameObject yeux5;
[Header("Sourcils")]
public GameObject sourcil1;
public GameObject sourcil2;
public GameObject sourcil3;
public GameObject sourcil4;
public GameObject sourcil5;
public GameObject sourcil6;
public bool test1;
void Start()
{
StartCoroutine(Blink());
bouche1.SetActive(true);
bouche2.SetActive(false);
bouche3.SetActive(false);
bouche4.SetActive(false);
bouche5.SetActive(false);
bouche6.SetActive(false);
bouche7.SetActive(false);
bouche8.SetActive(false);
bouche9.SetActive(false);
bouche10.SetActive(false);
bouche11.SetActive(false);
bouche12.SetActive(false);
bouche13.SetActive(false);
bouche14.SetActive(false);
bouche15.SetActive(false);
bouche16.SetActive(false);
bouche17.SetActive(false);
yeux1.SetActive(false);
yeux2.SetActive(false);
yeux3.SetActive(false);
yeux4.SetActive(false);
yeux5.SetActive(false);
sourcil1.SetActive(true);
sourcil2.SetActive(false);
sourcil3.SetActive(false);
sourcil4.SetActive(false);
sourcil5.SetActive(false);
sourcil6.SetActive(false);
test1 = false;
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Z))
{
test1 = !test1;
print("test");
Blink();
}
}
IEnumerator Blink()
{
yeux1.SetActive(true);
yield return new WaitForSeconds(1);
yeux1.SetActive(false);
}
}
voila mon code en entier si jamais ça peut aider