[2D] Jouer son TriggerEnter2D

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
TheSillas
Messages : 4
Inscription : 15 Nov 2017 13:06

[2D] Jouer son TriggerEnter2D

Message par TheSillas » 17 Nov 2017 15:19

Bonjour,
J'ai un petit problème, j'essaie de faire jouer un son au moment ou un objet passe sur une pièce, mais je n'arrive pas a le faire fonctionner.
J'arrive a faire jouer le son au lancement mais pas au ramassage.
Voici mon script :

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CoinStuff : MonoBehaviour {

    public AudioSource audio;
    public int valeur = 1;

	// Use this for initialization
	void Start () {
        audio = GetComponent<AudioSource>();
        //audio.Play();
    }
	
	// Update is called once per frame
	void Update () {
		
	}

    void OnTriggerEnter2D()
    {
        //Debug.Log("Plop");
        audio.Play();
        Destroy(gameObject);
    }
}
Merci d'avance pour votre aide !
.
 ! Message de : Max
Utilise les balises code SVP. Merci.
Voir la Netiquette en cas de doute.

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

Re: [2D] Jouer son TriggerEnter2D

Message par boubouk50 » 17 Nov 2017 15:34

Tu joues un son et tu détruis le gameObject qui le possède en même temps. Je pense que le son meurt avec le gameObject.
Soit tu as un Manager de son qui va récupérer le son a jouer (donc indépendant de l'objet détruit).
Soit tu désactives le rendu du gameObject puis le détruit une fois le son terminé.
"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

TheSillas
Messages : 4
Inscription : 15 Nov 2017 13:06

Re: [2D] Jouer son TriggerEnter2D

Message par TheSillas » 17 Nov 2017 15:54

Ah oui c'est une bonne idée je vais essayer sa !
Est ce que tu saurais me donner le code qui permet de verifier si le son est terminé stp ?

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

Re: [2D] Jouer son TriggerEnter2D

Message par boubouk50 » 17 Nov 2017 16:00

Ton AudioSource joue un AudioClip clip qui possède la propriété length.
https://docs.unity3d.com/ScriptReference/AudioClip.html
"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

TheSillas
Messages : 4
Inscription : 15 Nov 2017 13:06

Re: [2D] Jouer son TriggerEnter2D

Message par TheSillas » 17 Nov 2017 16:08

Bon au lieu de mettre un temps d'attente j'ai lié un script a l'objet qui ramasse la pièce et ca marche nickel merci de l'aide !

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

Re: [2D] Jouer son TriggerEnter2D

Message par boubouk50 » 17 Nov 2017 16:21

Techniquement, une bonne solution est d'avoir une classe SoundItem sur les items qui doivent jouer un son.
Dans la fonction OnColliderEnter2D de l'item, celle-ci va appeler une fonction PlaySound () d'une classe SoundManager en envoyant l'AudioClip associé puis va s'autodétruire. (les noms de classes et fonctions sont non contractuelles)

En gros, l'item possède le clip, le SoundManager possède les fonctions associées au son, le personnage crée l'événement par la collision.
"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

Répondre

Revenir vers « (C#) CSharp »