Как заставить ИИ слышать звуки и реагировать на них?

114
18 августа 2019, 15:40

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

Answer 1

В юнити нету родной возможности что бы заставить ИИ слышать звуки. Но это дело можно имитировать. Наприме как-то так:

// attached to object that has audio source
var objArray: GameObject[];
var volumeOffset: float = 5;
function PlaySound() {
  audio.Play();
  var sndRadius = audio.volume*volumeOffset;
  BroadcastSoundWave(sndRadius);
}
function BroadcastSoundWave (sndRadius: float) {
  var i: int = 0;
  var args: Array = new Array (gameObject, audio);
  for (i=0; i<objArray.length; i++) {
    var obj = objArray[i].transform;
    var dist = Vector3.Distance(transform.position, obj.position);
    if (dist < sndRadius) {
      obj.BroadcastMessage("heardSound", args,
        SendMessageOptions.DontRequireReceiver);
    }
  }
}

Или, подобные по идеи реализации.

А еще есть вот такой ассет: https://assetstore.unity.com/packages/tools/ai/realtime-hearing-ai-28492 который можно использовать в том числе и под эти нужды.

хотя вообще советую погуглить что-то вроде "unity AI reaction on sound", может найдешь и более интересный код

READ ALSO
Как найти индекс элемента в двумерном массиве

Как найти индекс элемента в двумерном массиве

День добрый, реализовываю замену элемента в массиве по индексу через DGVВыглядит следующим образом (получаю значение элемента по выделенной...

133
Путь к компилятору c#. JetBrains Rider

Путь к компилятору c#. JetBrains Rider

Не могу отыскать компилятор в JetBrains RiderПрошу указать путь к папке в которой он находится

118
Выдает ошибку во всех проектах Visual Studio

Выдает ошибку во всех проектах Visual Studio

Создаю проект за проектом и вот этоЕррор за еррором

126