Аудио клип не воспроизводится после столкновения - PullRequest
1 голос
/ 11 октября 2019

У меня возникла проблема со звуком в течение 3 дней. Я искал для воспроизведения аудио после столкновения. Не имея надлежащего представления ИЛИ, где проблема возникает в моем сценарии, я не мог решить свою проблему. В моем GameObject я добавил Audio Source через «Add Component», где я поместил свой mp3-файл в AudioClip, а также отключил «Play On Awake».

Примечание: PlayExplosionAnimation () и Destroy () работают нормально.

public class Player : MonoBehaviour
{

    private AudioSource source;

    void Start()
    {
        source = GetComponent<AudioSource>();
    }

    void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.tag == "Rocks")
        {
            source.Play();
            PlayExplosionAnimation();
            Destroy(gameObject);
        }
    }

}

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Проблема в том, что AudioSource прикреплен к игровому объекту, который был уничтожен сразу после обнаружения столкновения, поэтому вы никогда не услышите звук. Одним из возможных решений может быть задержка уничтожения игрового объекта путем указания количества секунд, на которое вы хотите задержать уничтожение, например, задержка на 0,5 секунды.

void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.tag == "Rocks")
    {
        source.Play();
        PlayExplosionAnimation();
        Destroy(gameObject, 0.5);
    }
}
0 голосов
/ 11 октября 2019

Попробуйте, и если это все еще не работает, значит, что-то не так с вашим звуком :)

public class Player : MonoBehaviour
{
private AudioSource source;

void Start()
{
    source = GetComponent<AudioSource>();
}

void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.tag == "Rocks")
    {
        source.Play();
        PlayExplosionAnimation();
        gameObject.SetActive("false");
        Destroy(gameObject, 1f);
    }
}

}

...