Звук смерти для воспроизведения перед перезагрузкой сцены - PullRequest
0 голосов
/ 26 мая 2020

У меня есть 1 сцена (это игра с бесконечным уровнем)

когда игрок умирает (произошло столкновение), звук не воспроизводит все полностью, потому что он перезагружается слишком быстро:

private void OnTriggerEnter2D(Collider2D collision)
{
 if (collision.tag != currentColor && collision.tag != "Score")
    {
        playerDeath();
    }
}

private void playerDeath()
{
    SoundManagerScript.PlaySound("Error");
    score = 0;
    // SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    SceneManager.LoadScene("Infinity Level");
}

Не могу понять, что мне нужно сделать, чтобы исправить эту ошибку

Edit: Звук 1se c long

Ответы [ 3 ]

1 голос
/ 26 мая 2020

Вы можете изменить функцию playerDeath () на курютину и сделать задержку, например,

private IEnumerator playerDeath()
{
    SoundManagerScript.PlaySound("Error");
    yield return new WaitWhile (()=> SoundManagerScript.source.isPlaying) 
    score = 0;
    // SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    SceneManager.LoadScene("Infinity Level");
}
0 голосов
/ 27 мая 2020

Хотя не уверен, решит ли это проблему, но сработает ли перенос звука в функцию обнаружения столкновений? вероятно, нет ...

Другим решением может быть работа над функцией «воспроизвести снова» после смерти, это задержит смену сцены до взаимодействия с пользователем, что может дать достаточно времени для воспроизведения звука. В зависимости от идеи игры, это взаимодействие может позже измениться на «возрождение в» [последняя контрольная точка] [дом] [начало уровня] [начало игры] ... или еще что-нибудь, о чем вы можете подумать.

Наконец, вы можете установить SceneManager.LoadScene на временную задержку 1se c. если больше ничего не происходит и пользователь в это время ничего не может сделать (кроме проклятия на экране за смерть), это может дать время для воспроизведения звука.

0 голосов
/ 26 мая 2020

Вы можете сохранить игровой объект аудиоисточника активным (не уничтожать его) при загрузке сцен, используя DontDestroyOnLoad () метод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...