This tutorial is for making custom gestures for holding the phone in case your avatar is not on the list of avatars that already has them, or you want to change the existing ones.
I expect people who are doing this to have a decent understanding of how to work on avatars so I won’t be holding any hands here.
This guide will mostly be an instruction on how I set up these gestures. It may not be particularly efficient, but it gets the job done.
Step 1: Make a duplicate of the _GestureTemplate folder located under “RuneFox/PhoneSystem/Animations/BaseSpecificAnimations” and Rename the Animator so it’s distinct and you can locate it easier later. I usually go w/ “PhoneSystemV2_Gestures-AvatarName”
Step 2: Open the animator and reassign the animations in each state with the animations that are in the duplicated folder you made. Unity doesn’t automatically reassign the animations in the animator when duplicated so they’re still pointing to the ones in the Template folder. Make sure you get all 6 states, 3 in Left Hand and 3 in Right.
Step 3: Navigate to “RuneFox/PhoneSystem/PREFABS/VRCFURY/Template” and drag the PhoneSystem prefab there into the hierarchy of your avatar and unpack it.
Step 4: Replace the Gestures animator in the VRCFury script with the one we created above. Also head to the Animator on your avatar and place that Gesture Controller in the Controller section as well since we’ll be needing it there to make changes to the animations
Drag the Armature of the avatar into the Source area for the Scale constraint. If the Phone is too big for your avatar you can unlock the Scale constraint here and play with the scaling to find the right size. Just make sure to re-lock the Scale constraint once you’re finished.
Navigate to the Hands of your avatar’s armature. These are usually labled as “hand” or “wrist” in the heirarchy. Also Expand the Index fingers of each of the hands.
We want to drag the PhoneContact-Index game objects onto the Second bone of each Index Finger and drag the Right/LeftHandTargets onto the Hand/Wrist bone.
Zero out the Position and Rotation and set the Scale to 1 for all Transforms of all 4 objects we just moved.
For the PhoneContact-Index Contacts, I usually set the radius and height to that of the finger colliders in the avatar descriptor. The position is usually set to half the height on the y direction.
The Storage Contacts stay where they are in the Heirarchy. Just drag whichever bone you want to parent them to into the Root Transform section of the Contact script. Play with the shape parameters until you have something that you like. I personally like parenting it to the spine and putting the contact in the small of my back.
Duplicate the Phone Object in PhoneSystem twice so you have 3 copies. We’ll be using these as guides for the gestures.
For Each Gesture we’ll need to change the parent constraints of the Phones to match the phone location that is used with each gesture.