## 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 <code>1</code>.
# 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 [[File:Unity Editor - Toolbar Plus More.png]] button.
# Select '''Int'''.
# Type in <code>Flying</code> (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 <code>Flying</code>.
# Click the white [[File:Unity Editor - SettingsIcon.png|alt=Gear icon]] 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 <code>1</code> in the textbox.
# 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 <code>1</code> in the textbox.
== References ==
== References ==
<references />
<references />
Revision as of 13:32, 3 November 2020
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.
Inclined Plane Method (Avatar 2.0)
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:
Ready for take-off.
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.
Inclined Plane Method (Avatar 3.0)
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.What your scene hierarchy should look like.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
Select the icon on the far right of the Mesh Renderer component.
Choose Remove Component.
Make sure Box Collider is still checked (enabled).
How everything should look.
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.