World/Udon Bugs & Feature Requests

Post about current World or Udon bugs feature requests. One item per post!
Non-constructive and off-topic posts will be moved or deleted.
Issue on implementing custom DSP algorithms with OnAudioFilterRead
I have encountered a problem related to Unity's DSP chain and Udon. I am planning to create an audio focused world, where I need to implement a custom DSP algorithm on audio that can respond to player behavior/controls in real-time. In the native Unity Mono framework, I can insert custom effects into the audio DSP chain by implementing the OnAudioFilterRead method in MonoBehaviour (see https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnAudioFilterRead.html ). In the UdonSharp documentation, I found that there is a method stub for OnAudioFilterRead in Unity events (see https://udonsharp.docs.vrchat.com/events/ ), so I should be able to implement it. However, it does not work in my Unity setup. I also saw a post on Canny mentioning that a component called OnAudioFilterReadProxy should be automatically added to the object if OnAudioFilterRead is implemented (See: https://vrchat.canny.io/udon/p/order-of-onaudiofilterreadproxy ), but this is not happening on my end. Any idea what could be going wrong with my script or configuration? Or it is a bug? My test code is like the following: using UdonSharp; using UnityEngine; using VRC.SDKBase; using VRC.Udon; public class SimpleSineGenerator : UdonSharpBehaviour { [SerializeField, Range(0, 1)] private float amplitude = 0.5f; [SerializeField] private float frequency = 261.62f; private double phase = 0; private double sampleRate = 48000; public void Update() { // verify that the script is running transform.Rotate(Vector3.up, 90f * Time.deltaTime); } public void OnAudioFilterRead(float[] data, int channels) { // DSP code double phaseIncrement = 2 * Mathf.PI * frequency / sampleRate; for (int i = 0; i < data.Length; i += channels) { phase += phaseIncrement; if (phase > 2 * Mathf.PI) { phase -= 2 * Mathf.PI; } float value = amplitude * Mathf.Sin((float)phase); for (int j = 0; j < channels; j++) { data[i + j] = value; } } } }
1
·
Bug Reports
·
tracked
Collider edge gravity riding bug
Try it out in this world: https://vrchat.com/home/world/wrld_0d5aae29-9ff4-4230-9697-cea19a896b79 When standing at the edge of a Box Collider (I have not tested other types of Colliders), .InPlayerGrounded() remains false incorrectly, while the player is still being held up by the Collider. The resulting chain of effects: Player retains velocity as if in mid air, thus creating a sliding effect along the direction the player was moving. While in this state, player cannot jump, just like in mid air. While in this state, player can move and change direction of the sliding (again, as if in a pseudo state of free falling mid air). While in this state, player is also continually being affected by gravity therefore can accumulate an infinite amount of downward velocity (minus Y) while in this sliding state or "gravity riding" state. When the player eventually exits this state (when his capsule is no longer being held up by the collider, or if he steps onto the collider properly), the massive downward velocity will snap the player to whatever floor surface is below the player in an instant, rather than the expected effect of start free falling with an initial zero downward velocity and slowly becoming faster like you would stepping off a high platform. Further testing or related bugs: The player capsule behaves differently while walking into different types of Colliders (e.g. Box Collider, Capsule Collider, Mesh Collider etc) so this effect might or might not appear with other colliders. But it certainly does with Box Colliders (test it in the above world).
1
·
tracked
Load More