Anything that relies on world space may not function at all, or just produce undesirable results.
Examples:
- Static batching
- Occlusion culling
- VRCObjectSync
- Specific shaders
When syncing the position of an object you should do so relative to the Anchor
object. Anchor
is the first child of WorldParent
.
One such system that can do this is SmartObjectSync.
- Before doing anything else, please make a backup of your project. You can easily do this with the Creator Companion.
VCC > Projects > Manage Project > The \/ arrow to the right of Open Project > Make Backup
.- The superior option is to just use version control software such as Git. This VRC Library page explains how to get started.
- Add
VRRefAssist
to your project through your method of choice. - Add the
Floating Origin
package to your project via one of the options below. - On the top bar in Unity click
KitKat > JetSim > Floating Origin > Install
.
- Add
Floating Origin
to the creator companion.Floating Origin
is part of the JetSim VCC listing. VCC > Projects > Manage Project > JetSim - Floating Origin > Add package (+)
.
- On the top bar in Unity click
Window > Package Manager
. - Click the
[+]
in the top left of thePackage Manager
window. - Select
Add package from git URL...
in the dropdown menu. - Paste this link:
https://github.com/KitKat4191/JetSim-FloatingOrigin.git
- Click
Add
on the right side of the link input field.
- Download the
.unitypackage
from the latest release. - Drag the
.unitypackage
from your downloads folder to theProject
tab in your open Unity project.
- The
VRC Scene Descriptor
that can be found on theVRCWorld
object now has itsRespawn Height Y
set to-1000000
. This is to prevent the player and pickups from constantly respawning when you travel downward quickly. - You now have a
WorldParent
object in your scene. You will need to parent all the objects that players will be able to see, walk on, interact with, etc. to this object. - You can mark the
WorldParent
object as the default parent to make your life easier. - For performance reasons It's important that you only parent objects to the
WorldParent
that actually need to move with the world. - I recommend that you put objects that are close together in the world under a common parent. This is to reduce the amount of direct child objects on the
WorldParent
. Which in turn reduces how many objects I need to iterate over in U#.