Player Calibration Script for VRChat Worlds [SDK3]
This script calibrates your VRChat SDK3 world to the height and bone setup of the player in your world. When the player switches avatar, an update is made if the height changed and specified objects can be adjusted in height, e.g. buttons, so all players can easily reach them. It is recommended to get this asset if you use any of my other scripts like the keyboard, piano, button & slider asset, etc. since they all need to calibrate to the player for an optimal experience. This also allows players to use those features that don't have all bones which is a common issue.
This script works without an update loop! A clever update queue eliminates frame time spikes, especially in a world where a lot of items need to calibrate. When used with any of my assets, this script will automatically fetch all needed components when you put it into your scene, since all tags and names are already set. This also works for your own assets when you set a tag on them.
The object height adjusting even works with multifloor worlds. You can define the min/max height and the ground height for each object or for object groups, relative to a floor heigth that you can define per object or group.
By simply assigning a tag to a GameObject in your scene, you have the following options:
AOP - set the object to a comfortable height for the player
SPH - send the player height to the UdonBehaviour/UdonSharpBehaviour on that object
SFB - send the main (index) finger bones to the UdonBehaviour/UdonSharpBehaviour on that object (not all avatars have the same bones, the script looks for the best alternative on each avatar rig)
SAC - call "OnAvatarChanged()" on the script attached to that object after setting the height/fingerbones to allow the script to make additional adjustments based on that information
To make your life as easy as possible, an editor script is provided that assigns the objects automatically. All you need to do is set the tag "PlayerCalibration" and then add the needed options to the name (e.g. "YourObjectName_SPH_SFB_SAC"). Then you click a button and all tagged objects in your scene are automatically checked and assigned to the PlayerCalibration-Script.
This feature can be experienced in this world: https://vrchat.com/home/world/wrld_b155ff30-0bbf-486c-afc5-e7a05145387b
It is recommended to test this out in the world linked above before you purchase. 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.
Please let me know if there is a feature missing so that I can add it to this product.
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
--------------------------------------------------