Adding Flight to an Avatar
Here's how to add the ability to fly to your avatar.[1]
Warning: This entire feature relies on a physics bug, which may be fixed in the future.
Note: This guide was written in Unity 2018.4.20f1 on Windows 10. YMMV.
VRC SDK 3 Methods
Inclined Plane Method
Same method, but with a few tweaks. Currently being tested.
- Right-click on your avatar's root node in the scene hierarchy.
- Select Create Empty from the context menu.
- Rename the new GameObject to Fly or something memorable.
- Right-click Fly in the scene hierarchy.
- Choose 3D Object > Cube.You should now see a Cube under the Fly object.
- Select Cube.
- In the Inspector tab, set the following:
- Rotation:
- X: -15
- Y: 0
- Z: 0
- Scale:
- X: 2
- Y: 0.4,
- Z: 5
- Rotation:
- Select the icon on the far right of the Mesh Renderer component.
- Choose Remove Component.
- Make sure Box Collider is still checked (enabled).
Now you just need to make a toggle for Fly.
Toggles
- Create an animation to enable the Fly object, called Fly On.
- Duplicate the avatar in your scene. Name doesn't matter, you can leave it as default.
- Open your Animation tab. (Window > Animation > Animation)
- Make absolutely certain you have selected the DUPLICATE avatar in your scene.
- In your animation tab, click the Create button.
- Save the animation somewhere convenient, and name it Fly On.anim.
- Click Add Property.
- Click the + icon next to Fly > Is Active.
- Click the keyframe diamond at the end of the timeline.
- Press delete.
- Click the keyframe diamond at the beginning of the keyframe.
- Check the checkbox next to Fly: Game Object.Is Active to make it active for that keyframe.
- Click on the frame line immediately after the 0:00 mark.
- Add a new keyframe using the Add Keyframe button.
- Make sure that Fly: Game Object.Is Active is still checked.
- Add an animation to disable the Fly object, called Fly Off.
- Perform the same steps as above, but name it Fly Off, and uncheck the Fly: Game Object.Is Active checkbox.
- Delete the duplicate avatar.
- Make an expression menu object for your avatar.
- Right-click your avatar's assets directory in the Project View.
- Create > Folder named Menus.
- Right-click the new folder.
- Create > VRChat > Avatars > Expressions Menu.
- Name it Avatar Root Menu.
- Select the avatar's root node in your Scene Hierarchy.
- Under your VRC Avatar Descriptor, expand the Expressions section.
- Drag Avatar Root Menu into the Menu slot.
- Make a parameters object for your avatar.
- Right-click your avatar's assets directory in the Project View.
- Create > Folder named Parameters.
- Right-click the new folder.
- Create > VRChat > Avatars > Expression Parameters.
- Name it Avatar Params
- Select the avatar's root node in your Scene Hierarchy.
- Under your VRC Avatar Descriptor, expand the Expressions section.
- Drag Avatar Params into the Parameters slot.
- In an empty slot, add an Int called Flying.
- Add a new toggle control to your menu.
- Click on the new menu in your assets.
- Ensure the Active Avatar is
- Click Add Control.
- Set the Name to Flying.
- Leave Icon as None.
- Set Type to Toggle.
- For Parameter, select Flying, Int from the dropdown.
- Set Value to
1
.
- Make an FX Animator.
- Right-click your avatar's assets directory in the Project View.
- Create > Folder named Animators.
- Right-click the new folder.
- Create > Animator Controller.
- Name it Avatar FX.
- Select the avatar's root node in your Scene Hierarchy.
- Under your VRC Avatar Descriptor, expand the Playable Layers section.
- Click the Default FX button to override it.
- Drag the new Avatar FX animator into the FX slot.
- Open your FX animator by double-clicking on it.
- At the very top, select the Parameters tab.
- Click the button.
- Select Int.
- Type in
Flying
(case-sensitive). - Leave the default value as 0.
- Go back to the Layers tab.
- Create a new layer using the + button.
- Double-click on the layer's name.
- Name it
Flying
. - Click the white on the far right of the new layer's name.
- Set Weight to 1.
- Leave Mask set to None.
- Ensure Blending is Override.
- Select the layer by clicking on it.
- Drag Fly Off into the graph. It's highlighted in orange, so this is our landing state, where the animation controller will sit by default.
- Drag Fly On into the graph.
- Right-click the Fly Off node in the graph.
- Select Make Transition.
- Click Fly On to finish making the transition from Fly Off to Fly On.
- Click the new Fly Off -> Fly On transition.
- Uncheck Has Exit Time.
- You will get a warning, ignore it. We're fixing it in the next step.
- Click the + button under Conditions.
- Select Flying from the first dropdown.
- Select Equals from the second dropdown.
- Enter
1
in the textbox.
- Uncheck Has Exit Time.
- Create another transition between Fly On and Exit.
- Uncheck Has Exit Time.
- Add a condition.
- Select Flying from the first dropdown.
- Select Not Equals from the second.
- Enter
1
in the textbox.
Usage
- Enable the Fly object.
- Move forward and jump, or fall off of something.
- Move forward to go up.
- Move backwards to go down.
- Strafe to stay at the same level.
- Jump go up.
VRC SDK 2 Methods
Inclined Plane Method
Prerequisites
- VRCSDK2
- A working avatar
- Some experience with Unity
Process
- With your Unity project open, right-click on your avatar's root node in the scene hierarchy.
- Select Create Empty from the context menu.
- Rename the new empty GameObject to Fly or something similar.
- Right-click Fly in the hierarchy.
- Select 3D Object > Cube.
- Select your new Cube in the hierarchy.
- In the Inspector, set the scale of Cube to:
- X: 2
- Y: 0.4
- Z: 5
- Set the rotation of the X axis to -30.
- Disable the Mesh Renderer.
- Make sure Box Collider is enabled. Leave it at default settings.
Your cube should now look like this:
However, you will want to toggle this ability with a gesture or emote, otherwise you will always be in "flight mode". You will want to toggle the Fly node we made earlier.
References
- ↑ Rampag3, How to Make a Flying Avatar https://www.youtube.com/watch?v=w28WejN9MMQ