docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    NetworkObject parenting inside Boss Room

    :::note Required reading: NetworkObject Parenting :::

    Before detailing Boss Room's approach to NetworkObject parenting, it's important to highlight a limitation of Netcode: A dynamically-spawned NetworkObject can't contain another NetworkObject in its hierarchy. If you spawn such a NetworkObject, you can't spawn children NetworkObjects. You can only add children NetworkObject components to a NetworkObject that is part of a scene.

    Boss Room leverages NetworkObject parenting through the server-driven PickUp action (see PickUpAction.cs), where a character has the ability to pick up a specially-tagged, in-scene placed NetworkObject (see PickUpPot prefab].

    At its root, PickUpPot has a NetworkObject, a NetworkTransform, and a PositionConstraint component. AutoObjectParentSync is enabled on its NetworkTransform (as is by default) so that:

    1. The NetworkObject can verify server-side if parenting a Heavy object to another NetworkObject is allowed.
    2. The NetworkObject can notify us when the parent has successfully been modified server-side.

    To accommodate the limitation highlighted at the beginning of this document, Boss Room leverages the PositionConstraint component to simulate an object following a character's position.

    A special hand bone has been added to our Character's avatar. Upon a character's successful parenting attempt, this special bone is set as the PickUpPot's PositonConstraint target. So while the PickUpPot is technically parented to a player, the PositionConstraint component allows the PickUpPot to follow a bone's position, presenting the illusion that the PickUpPot is parented to the player's hand bone itself.

    Once the PickUpPot is parented, local space simulation is enabled on its NetworkTransform component.

    In This Article
    Back to top
    Copyright © 2025 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)