[A l'aide] Problème de son

Questions à propos de la partie audio, y compris les problèmes de script s'y rapportant.
Avatar de l’utilisateur
HrimGrimnir
Messages : 5
Inscription : 22 Août 2015 14:06

[A l'aide] Problème de son

Message par HrimGrimnir » 21 Déc 2015 18:30

Bonjour / Bonsoir à tous et toute !

Je vous expose mon problème, ça fait quelques temps que je développe mon petit tower Defense sur Unity (en 2D). Tout fonctionne très bien mais ça manqué de son, chose que je découvre aujourd'hui. J'ai donc crée un Mixer, regardé des tutos et la doc, mit de l'audio source sur mes tourelles et un simple

Code : Tout sélectionner

audio.PlayOneShot(SonsTir);
en première ligne de ma fonction de Tire. Mon soucis, c'est que ça fonctionne très bien lorsque j'ai 3/4 tourelles qui tire, mais quand il y en a plus, le son des tirs est vachement réduit voir saturé jusqu'à plus les entendre ou vraiment très très bas. On dirait que le logiciel, essais de compenser la forte quantité de sons. Et si jamais j'ai plusieurs sons de type "laser" et "explosif" les sons laser mange littéralement les sons d'explosif, qui sont très réduit.

Donc voilà, je penses que le problème viens tout simplement de la succession de sons (mes tourelles tire en moyenne toutes les 0.1 secondes, peut être trop rapide pour du sons...). Et donc, un simple PlayOneShot(AudioClip) ne suffit pas ? Je suis un peu perdu je vous avouerais, si jamais vous saurez m'aiguiller je vous en remercies grandement d'avance :)

HedgehogTeam
Messages : 15
Inscription : 10 Août 2015 12:06

Re: [A l'aide] Problème de son

Message par HedgehogTeam » 21 Déc 2015 18:52

J'ai déjà été confronté à ce problème :(

Unity n'est pas en possibilité de gérer un nombre infini de son en même temps ... (Sautration, le son qui changes , le son qui est tronqué etc... ). Dans la theorie si, puisqu"il attenue le son à chaque nouveau son ... Mais au bout d'un moment ca devient une bouillie


Tu n'as pas beaucoup de solutions (du moins que je connaisse)
- Tu peux attenuer cet effet, en reglant correctement les distances min et max de l'audio source car par défaut c'est beaucoup (500 Unités) donc l'audio listener ne sera pas surchargé par des sons qui n'ont pas d'importance en relation avec la distance. Mais dans ton cas je suppose que cela n'aura que peut d'impact.
- Reduire le nombre de son joué, en utilisant des boucles à la place d'un son unitaire. (au lieu de joué un son à chaque tir pendant une rafale, joues un son cadencé en boucle)
-Ajouter un petit manager, qui s'occupera de jouer le son en fonction du nombre qu'il est déjà entrain de jouer.

Une solution est donné ici, a tester
http://answers.unity3d.com/questions/95 ... e-sam.html

Unity atteint une taille que des solutions simple son à porter de main, mais le net est saturé de solution alternative... car Unity a donné une solution intégré bien plustard.

Mais si quelqu'un connait une solution intégré je suis preneur aussi.

Nicolas
Dernière édition par HedgehogTeam le 21 Déc 2015 19:05, édité 1 fois.

Avatar de l’utilisateur
HrimGrimnir
Messages : 5
Inscription : 22 Août 2015 14:06

Re: [A l'aide] Problème de son

Message par HrimGrimnir » 21 Déc 2015 19:05

HedgehogTeam a écrit : - Reduire le nombre de son joué, en utilisant des boucles à la place d'un son unitaire. (au lieu de joué un son à chaque tir pendant une rafale, joues un son cadencé en boucle)
Ah je n'y avait pas pensé ! Ça me semble pas mal, j’essayerais demain et ferait un retour si ça fonctionne bien. Comme tu dis, la vitesse de rechargement est variable et peut même varié pendant qu'elle tire. Mais j'ai peut être une idée du coup, peut être en bouclant avec une condition booléenne (entrain de tirer ou non) dans un IEnumerator avec une attente qui correspond au temps de rechargement.

Merci bien l'ami ! :mrgreen:

HedgehogTeam
Messages : 15
Inscription : 10 Août 2015 12:06

Re: [A l'aide] Problème de son

Message par HedgehogTeam » 21 Déc 2015 19:06

Regarde de se coté la, je ne l'ai pas testé, mais peut être que cela fonctionne bien
http://answers.unity3d.com/questions/95 ... e-sam.html

Avatar de l’utilisateur
HrimGrimnir
Messages : 5
Inscription : 22 Août 2015 14:06

Re: [A l'aide] Problème de son

Message par HrimGrimnir » 22 Déc 2015 12:07

HedgehogTeam a écrit :Regarde de se coté la, je ne l'ai pas testé, mais peut être que cela fonctionne bien
http://answers.unity3d.com/questions/95 ... e-sam.html
J'avais tenter un truc équivalent (ainsi que ce qu'il propose en essayant de coller avec le temps de tir moyen des tourelles) mais ça crée un gros problème, c'est que ce n'est plus en accord avec ce qu'on voit d'afficher. C'est pas mal dans la situation de la personne avec une chose fixe, mais pas avec mes 66 tourelles de bruit différents qui tappes de 0.1secondes à 0.8. Ou alors c'est que j'ai mal compris, ce qui est possible avec mon anglais :gene:

Bon, pour ce qui est de la boucle ça marche plutôt mieux. J'ai juste une perte acceptable de 1 voir 2 tirs(edit : corriger). Mais pour le moment ça joue bien tout les sons, sans réduction de bruit ou autre :cote: Voici ce que j'ai fais :

Code : Tout sélectionner

IEnumerator PlaySoundTir(){
	EntrainDeTire = true;
	while(TurretDetect.Tar.Length>0  && MapreteATire){
		audio.Play();
		yield return new WaitForSeconds(TurretDetect.TempsRecharge);
	}
	EntrainDeTire = false;
}
	
IEnumerator VaisTire(){
	MapreteATire = true;
	yield return new WaitForSeconds(TurretDetect.TempsRecharge-0.02f);
	MapreteATire = false;
}
En gros, ça boucle tant que la tourelle a de l'ennemie dans le viseur et est caler sur sa vitesse de tire. On vérifie aussi qu'elle a bien retiré en temps voulut. Et dans ma fonction de tire on retrouve tout simplement.

Code : Tout sélectionner

if(!MapreteATire)
	StartCoroutine(VaisTire());
if(!EntrainDeTire)
	StartCoroutine(PlaySoundTir());
Bon, je penses que je pars dans la bonne direction mais faut que j'arrives à peaufiner quelques détail. Si jamais il existe une meilleurs façon de gérer le problème, n'hésitez pas. J'aime apprendre !

Edit : Mes tourelles ne tirant pas spécialement dès que possible (dût à une IA pour choisir les meilleurs cibles) parfois, lors d'une hésitation, ça décalé les sons de celle-ci. Du coup j'ai modifier le code en conséquence et ça marche plutôt bien. Merci encore pour cette piste de la boucle :)

Répondre

Revenir vers « Audio, musique et sons »