Звук не воспроизводится сразу после object.instantiate (Unity) - PullRequest
0 голосов
/ 03 ноября 2019

Итак, у меня есть небольшая игра с игровым объектом под названием «бомба». Я кодировал скрипт, который делает это таким образом, что всякий раз, когда вы нажимаете или нажимаете на экран, игровой объект бомба клонируется (используя экземпляр). Итак, к моему игровому объекту-бомбе я прикрепил новый компонент скрипта с

FindObjectOfType (). Play ("name");

внутри. Предполагается, что моя бомба издает звук грохота при столкновении с чем-то, поэтому триггер и строка кода выше делают именно эту вещь.

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

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

Сегодня я потерял так много нейронов, пытаясь понять, как это сделать, но я не могу найти никакой подсказки, поэтому я прошу вас о вашей помощи сейчас! 101

Здесь у вас есть ссылка на видео, в котором вы можете услышать, как плохо звучат взрывы https://youtu.be/JdIrcgfkVHI

Заранее спасибо !!

1 Ответ

0 голосов
/ 03 ноября 2019

Из того, что я могу сказать, вы слишком усложняете ситуацию, когда в этом нет необходимости, просто присоедините AudioSource с зажимом для бомбы к префабу с бомбой, для которого установлено PlayOnWake.

Что касается того, почему выЯ думаю, что эта проблема возникает из-за того, что AudioSource может издавать только один звук за раз, поэтому не может издавать взрывные звуки одновременно для 2 бомб.

РЕДАКТИРОВАТЬ Обновлениепосле комментария

Вы можете изменить, будет ли PlayOnWake запускаться при ударе Игроком, используя его тег, как в этом примере.

public class BombDemo : MonoBehaviour
{
    private AudioSource _soundEffect;

    private void Awake()
    {
        _soundEffect = GetComponent<AudioSource>();
    }

    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            _soundEffect.Play();
        }
    }
}

Этот сценарий при подключении к GameObject с аудиосоистером будетиграть в нее, когда она вызвана столкнувшимся с ним объектом игрока.

Сохранение этой логики на бомбе само по себе намного легче поддерживать, а не пытаться делать все это со стороны игрока, даже если вывам нужно получить доступ к PlayerController (или как вы там его называли), который вы можете сделать при воспроизведении звукового эффекта, используя ..

PlayerController playerController = other.gameObject.GetComponent<PlayerController>()

.. для eXample

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