Hand Followers


The XR Manager includes a Hand Follower for each hand controller. This is first and foremost responsible for tracking the VR Controller and matching the First or Third person hand transform. This part of the component is seen after the Input fields.


The Follower can be set inactive using a VR Action and this is needed if you are to use canned animations like for Melee or Shooter modules.  However, the most important part of this script is the Offset Rotation. VR hand controllers and Unity 3D characters do not match, and this is especially true for the GC supplied Character. For our examples (at the time of writing) the GC Character Left hand requires -90 and -180 for x and y rotations, and the Right hand requires 90 and 180 for x and y respectively. This may also be different for individual characters used in your app, and need to be adjusted when changing the player character model. This can also be done with a VR Action.


The Hand Canvas part of this component allows you to attach a Screen Space Canvas, convert it to World Space, and position it near of on the hand of the player model. The settings are mostly self explanatory, but remember that as this is a for Screen Space such as for the GC Stats module, it needs to be scaled down by the factor of 1000.



The Hand Grabber section sets Grabbing active or inactive and is controlled by a VR Action, and the details of this are covered in the VR Prefabs under  Grab Points. All setting and co-ordinates for the Grab are taken from each individual object and not set here.


Finally there are the Hand Controller Inputs. These are set here but can also be set using a VR Action, and this enables you to have unlimited settings for each controller and to have them context sensitive, meaning changing them at runtime depending on the game state.


We used the Oculus Quest 2 as a baseline for our development, hence some controllers may not support all inputs although Unity has tried to accommodate each of them. This can been seen on https://docs.unity3d.com/Manual/xr_input.html  We have provided Action slots on each of the controllers for:


  • Trigger (On Press, While Press, On Release)
  • Grip (On Press, While Press, On Release)
  • Button 1 (On Press, On Release)
  • Button 2 (On Press, On Release)
  • Thumbstick Button (On Press, On Release)


The Trigger and the Grip float settings (0.0 to 1.0) can be stored in a GC Variable, and this can be useful for things such as speed and thrust increase or decrease settings. We have also supplied a Multiplier in case a setting of 0 to 10 or 0 to 100 is needed.


The Thumbstick has a button to trigger Actions, and you can also store the Vector 2 setting in a GC Variable in needed. As default, we use the Left thumbstick Vector for player movement, and the Right one for Camera movement, although this is configurable through modifying the Prefabs.


The rest is self explanatory, drag in a GC Action into the On Press or On release slot, and it will be executed On press or On Release of that corresponding input. Be careful using the While Press, as this will continually execute the Action. This is similar to an Update Trigger and should only be used for specific Actions.


Check each of the supplied Example scenes for various ways of configuring the Hand Inputs.

Useful Links

Pivec Labs









Full list