Over the past year and a half I have been learning how to create a Multiplayer VR FPS in unity named Project Impulse, which you can wishlist on steam right now! It allows you to climb, jump, slide and shoot with fully physics based movement and interaction. It's created with a robust game manager allowing for a plethora of different game modes and also has support for modded maps! The multiplayer is done in mirror and uses a relay server to connect players through nat punchthrough.
The game features fully physics based hands and movement. The hands are controlled using a stable backwards PD controller to control the hands rigidbodies in order to reach the target positions. The climbing physics is done using hooke's law and dampening the force relative to its velocity. Climbing uses the vector between the target position and the rigidbody to apply a force to the player in order to return the tracked hands to the in-game hands creating a fun and dynamic climbing system.
Using unity's addressables and mod.io I created comprehensive mod support for Project Impulse. You can go to my github and download the custom editor, create a map and then publish it to mod.io for others to enjoy. It also has a comprehensive validation system that informs the modder of certain requirements. For example if you’re creating a capture the flag map the arena must have two flag spawn points in order for it to be a valid capture the flag map.
Using laser points for menus in vr is kind of weird so I created physical buttons that can interact with unity's UI system. When the button rigidbody is pushed below a threshold it will invoke a UnityEvent specified in the editor in order to inject a keyboard input. When the left button is pushed it simply injects a left input as if you were pushing it on a joystick or keyboard.
Since the hands are moved using a PD controller the physics of throwing an object are almost identical to real life. The velocity of the object is not calculated at the end of the motion, instead it is a combination of the full throwing motion.
This feature was based off of Half-Life: Alyx's force pull. It uses kinematic equations to set the object's initial velocity of the object. If the player moves their body or hand the object will completely miss. So as the object is in flight a PID controller is used to guide the object to the player's hand even if the player moves their hands, slides to a new position or jumps out of the way.