Advanced pushable Button & Slider for VRChat Worlds [SDK3]
This feature enables users to physically interact with buttons and sliders in your world. Multiple buttons (as many as you want) or sliders can be assigned to each other to stay in sync. I was the first person that made UdonSharp-only buttons that work without collider physics over a year ago and I've constantly refined my physics interaction scripts since then. This work here is the result of all my gained experience and research in that field & your purchase helps me to refine them further. This asset currently has around 3'000 lines of code (editor scripts included). Others have tried to copy it, this is the original.
There is also a variant of the button and of the slider with global sync (late joiner proof) since V1.3 now. Both button and slider fall back to "desktop mode" when the player has no finger/hand bones if you also have my player calibration script V2.1 or newer in your world (https://reimajo.gumroad.com/l/PlayerCalibration). This script is highly recommended to make sure that all players have an optimal experience in your world when using this asset. Since V1.4, the area toggle can auto-assign all scripts inside the bounds to make it really easy to optimize your world. Since V1.5, a radio button variant is included with an example of a mirror quality toggle. Since V2.0, you can toggle all chairs or tagged colliders with a single button in your world.
Everything was created with performance in mind. Each button is baked into a single mesh renderer when not being pushed to reduce draw calls & only turns into two mesh renderers while being pushed, allowing additional performance improvements with static batching. There is an area trigger included which completely stops all update loops when the player is not close to the buttons to improve performance. All models have 3 LODs and the slider has a single skinned mesh renderer with one bone. The model & texture was created by Alex Lotor and the symbols were created by Sero Kaiju (I've paid them for their work in order to sell it here).
Several editor scripts are included to make your life easier:
- a bake script in case you want to change the button's default state while keeping all the performance improvements from a single mesh renderer
- a script to change the LOD thresholds from all buttons in your scene with a single click
- a script to select all mesh renderer under a root object, to easily assign a different material to a button & change the symbol on it
- a photoshop template to generate all textures for a new symbol automatically or to change the on/off colors
- a script to generate a test grip and measure the performance impact
Several different symbols are included already and you can easily add your own ones as well with the included photoshop template. To use the buttons/sliders, all you need to do is dragging them into your own scene.
Detailed documentation & a guide is included which describes how to implement the buttons and use them in your scene.
The example setup includes both a toggled smart mirror (turns on/off when you walk away) and a background music player that can be controlled with the slider and the on/off button, all you need to add is an audio file.
The buttons have both haptic feedback and sound. They support both VR and desktop users. They are complex buttons with several zones to emulate cherry switches. They work out of the box, but it is recommended to use them with my player height script to calibrate them to each player as well as changing the height to them (see the example world). The buttons also work out of the box with all my other scripts to toggle their functionalities and use the same API.
You can use the buttons to toggle objects or to send the push event to your own script. They come with a custom inspector to make this as easy as possible.
You can test the buttons and sliders in this world: https://vrchat.com/home/world/wrld_01d9ef53-14cf-4895-b115-6864710d3259
The 2 button groups on the left are also synced for other players (globally, late joiner proof).
There are proper APIs included, ensuring that you can communicate to your other scripts, including sample code. The ongoing development of this took a long time. As usual, you will receive all updates for free after you purchase.
- UdonSharp Script Version: The only version available right now, so you will need to install the (free and awesome) UdonSharp compiler.
- UdonSharp Script Version + Support me: The same like the cheaper version, but with a price that better fits the amount of time that was put into this asset.
As always, if you find that a certain feature is missing, please let me know. I can add more features on-demand as I did for my other products as long as it makes sense for multiple people.
Your world needs to be SDK3 in order to use this. There is documentation included and the setup should be as easy as copy-pasting the provided setup. I also included contact options in case you need help setting this up after purchase. All my products are designed to be easy to use without programming knowledge. There is a guide included on how to set it up and what each setting does.
I included a simple demo to show you the setup.
The UdonSharp script has a custom inspector with a detailed explanation of each setting when you hover over them, which makes it a lot easier to change settings. Source code is also included (and fully documented/explained), so you can understand how it works and modify it to your needs. You need to import UdonSharp (free C#-Udon compiler) into your project in order to use it. Programming knowledge isn't required.
LICENSE: See https://reimajo.booth.pm/
All my products: https://reimajo.booth.pm/
--------------------------------------------------
Join the ReimajoBoothAssets Discord if you own any of my assets to receive update notifications, help & support: https://discord.gg/ZgsxQr5JNC --------------------------------------------------