Set an EventInstance's 3D attributes to multiple locations in unity?

I am making a custom occlusion system where a Room can send information to emitters about doorways/windows and if the player is in the room or not. Currently when the player leaves the room I stop the emitters main event and have it make and event for each doorway and when the player enters the room this would delete the door instances and remake or unpause the actual emitter’s instance.

This works for emitters/ambience but would not work on for example the footsteps of a monster in the other room as the footstep would be retriggered mid instance and sound weird. Because I have multiple doorways I also cannot just set the current instances position to the doorway so simply and even I were to do that I would be unable to hear the sound come from a window and a doorway on the same wall.

I am aware I could do some stuff with channels but that would be a bit limiting and convoluted to set up. Is there any way to effectively clone an instance or give the instance multiple gameobjects to emit from?


This is likely a good use-case for the Transceiver effect in Studio. Your could place a pre-fader Transceiver in “Transmit” mode on your main event, have a separate event with a Transceiver in “Receive” mode that you use for your doors/windows, and have the main event and all instances of the door event playing at once.

When the player leaves a room, you’d use a parameter to automate the fader volume down and the Transceiver volume up on your main event, thereby causing the main event to not be directly audible, but instead to transmit to each of the doorway events. To minimize the amount of distinct events you’d need, you could also use a parameter to automate the Transceiver channel of your doorway events, meaning they could be reused for multiple rooms as opposed to having a bespoke event for every room.

The main limitation of this approach would be the limit of 32 active Transceiver channels, which may not be enough if your scene is extremely complex - you could use a script to dynamically manage active channels based on some criteria (audibility, distance from player, etc.) if you needed to. The other limitation would be the need to set the Transceiver channel of all entities that enter a given room, which you would have to handle in code.

Hope this helps!

I was hoping there was another way outside of channels but it will have to do!