Search Unity

  1. Looking for a job or to hire someone for a project? Check out the re-opened job forums.
    Dismiss Notice
  2. Good news ✨ We have more Unite Now videos available for you to watch on-demand! Come check them out and ask our experts any questions!
    Dismiss Notice

Feedback [WIP] Physics Audio Collision System Plugin [Official]

Discussion in 'Works In Progress' started by niv-, Apr 20, 2021.

  1. niv-

    niv-

    Joined:
    Apr 20, 2021
    Posts:
    4
    Howdy guys and gals o/

    We are creating a Physics Audio System that can handle most if not all the collision / joint audio in your game while drastically reducing the amount of effort required to implement this kind of interaction.



    Our goal is to develop it as user friendly as possible, optimize it and ensure that is is production ready by the end of April 2021.


    Ease of use:

    Setting up collision sounds can be a huge pain in the butt; multiple audio samples for impacts, loops for sliding, setting up and hand tweaking Audio Sources/collision parameters … per item …

    The simplest workflow we could come up with was: selecting a gameobject with either a rigidbody or collider on it and adding a single component to make it work. (no Audio Sources required on your prefabs)

    We chose to wrap the audio and its settings into an Audio Material similar to Physics Materials in unity.
    So that we don't have to tweak any parameters on the components themselves since this will result in tweaking the prefabs instead of tweaking shared assets.

    Furthermore this system does not create any additional / unwanted gameobjects inside the editor nor during runtime to make this work.

    We like to leave layers and tags open to you if we can. (so far the system does not require them)

    And we would also like the system to support unity 5 and above.


    Recording audio:

    Instead of having to record multiple impact sounds and sliding loops per item we figured out a way to do it with a single sliding loop.

    This drastically reduces the amount of work needed to record the audio itself.


    Performance:

    After a quick look at Unities Audio Source component it becomes clear that
    having an Audio Source per object and an Update loop per component isn't the way to go, thus
    we designed our system so that it handles everything with a single Audio Source and Update loop.

    The Manager calculates the priority of the audio objects in the scene, filters out the most active and nearest ones,
    combines all the collected audio and plays it all through a single Audio Source.

    This results in an optimized setup with a fixed amount of ms that we can control through global settings.


    What we have so far:

    We have the main system working specifically the manager, the Audio Material assets And our main audio component that attaches to the objects in the scene.


    Physics Audio Component:



    Physics Audio Material:



    Physics Audio Manager:




    System at work:
    (the audio in this video is recorded using our personal headset, better audio is in the make)




    what we like to add before release:
    • add a way to have multiple audio materials on the same Rigidbody (physics object) V
    • make unity terrain compatible
    • implement hinge joint and configurable joints

    what we want from you:
    • We would love to get feedback before this asset is released, your wants and needs.
    • We would like to hear questions about anything that is not clear or in doubt.
    • We would like to get a feel of how useful this asset would be, can you use this in one of your projects?
    • We would like some beta testers before the asset hits the store.
     
    Last edited: Apr 23, 2021
  2. niv-

    niv-

    Joined:
    Apr 20, 2021
    Posts:
    4
    Howdy fellow devs.

    The first milestone has been hit!

    It is now possible to add multiple audio materials to a single Rigidbody. (physics object)


    workflow:

    1) Assign PhysicsAudioDelegate: assign to the gameobject that has the rigidbody assigned to it



    2) Assign PhysicsAudio to child colliders: assign to the individual colliders of your object



    Keeping the workflow simple as usual ^^

    Performance:

    we added a performance field in our global settings to constraint the maximum allowed contact points when using PhysicsAudioDelegate components, and we are also avoiding SendMessage calls which are very slow.



    Physics Audio Delegate at work:



    Feedback and questions are welcome.
     
  3. Marked

    Marked

    Joined:
    Feb 24, 2015
    Posts:
    28
    Hi, I'm working on a vr game with a lot of interactable objects.
    I'm wondering what the performance is like and any limitations on maximum number of colliding sounds.
    interested in being beta tester, do you have discord?
     
unityunity