Netcode for GameObjects: NetworkRigidBody never gets Authority on server

I tried to create a little 2d multiplayer sample initially based on this tutorial with NetworkManager:

Client-server quickstart for Netcode for GameObjects | Unity Multiplayer Networking (

In my scene I have game objects with the following components:
- Background
- MainCamera
- DirectionalLight
- NetworkManager / UnityTransport / NetworkMangerUI Script

I have added the following components to the player prefab:
- RigidBody2D
- NetworkObject
- MyPlayerScript
- NetworkTransform
- NetworkRigidBody2D

I have dragged the prefab to the NetworkManager Prefab property

From my understanding the purpose of NetworkRigidBody2D is to give the Server full control about dynamic changes (Authority) and restrict the changes on the Clients to kinematic only.

Now when I host a game (only one player) I would expect my RgidBody is still dynamic because the Host should have authority. But it becomes kinematic. Obviously the Host has not Authority.

Without NetworkRigidBody2D at least the one play scenario works. The player is dynamic.

I debugged into the sources from Netcode but I can not imagine how this scenario should work correctly. What I found out is...

  • NetworkRigidBody2D determines the authority by the NetworkTransfrom.CanCommitToTransform-Flag
  • CanCommitToTransform is set in the Initialization process of NetworkTransform but only if the object has not spawned yet.
  • The SpwanManager of the NetworkManager spawns the object automatically when I Host but the NetworkTransform is not called during this process.

In Addition the position of the player is initially 0, 0, 0 although in the prefab it was set to 0, 0, 4. The same if I don't use NetworkRigidBody2D

I think I have missed something essentially of the concept. Please help me to find out what goes wrong here.