Bonsoir tout le monde,
si vous pouviez m'aider à ce sujet, merci d'avance !
Je suis bloqué sur une partie de mon script qui se décompose de la manière suivante en faisant assez bref :
-un ennemi utilise un NavMeshAgent pour repérer mon Player et toujours suivre sa position
-lorsque celui ci est à une magnitude <= à 7, un son ce joue
-1 seconde après, mon ennemi est "téléporté" (le fameux transform.position qui ne veut pas marcher)
Pour commencer avec le transform.position, mon ennemi se "téléporte" sans problème mais pas du tout à la valeur donnée ! J'ai d'ailleurs essayé de nombreuse valeur différentes, il retourne toujours plus ou moins un endroit qui n'est pas la position donnée. Je pense peut être que c'est le NavMeshAgent qui pose problème, est ce que cela pourrait venir de là ? Parce que là je ne vois pas d'autre raison, sachant qu'il est dans une zone "intérieur", donc beaucoup de mur entre sa position actuelle et celle du "transform.position = Vector3(0, 0, 0);" !
Puis pour en finir, ce son qui est joué lorsque mon ennemi est à côté se jouait plusieurs fois en même temps. Alors je lui ai attribué un booléan, et si je joue un son, ce booléan s'active, donc on bloque l'activation d'un autre son, on attend 5 sec puis on peut rejouer un son en désactivant le booléan (j'explique mal donc pour ceux qui n'ont pas compris, au lieu de superposer 30 fois le même son, je veux qu'il se répète à chaque fin du clip audio):
J'aimerai que le son puisse se rejouer, mais ce n'est pas le cas. Probablement à cause du float de "Invoke" qui est plutôt inutile je trouve, du coup j'ai essayé des valeurs différentes mais ça ne change rien. Une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 // dans la fonction Update avec un if(magnitude <= 7) if(executingSound == false) { audio.PlayOneShot(sound_1); executingSound = true; //on ne peut plus jouer de son } if(executingSound == true) { Invoke("playSound", 5); } function playSound(){ // bloquer le lancement d'un autre sons pendant 5 sec yield WaitForSeconds(5); executingSound = false; //on peut rejouer un son }
Merci pour vos réponses
Axel
Partager