CLEAN movement of Network.Instantiated objects on OTHER machines

I have GameObjects that have their own physics scripts for movement and of course a rigidbody.

When I Network.Instantiate on any machine, it has control of the movement right? The other machines just receive transform data through OnSerializeNetworkView in a script that is attached to the NetworkView of the instantiated object.

I seem to get jittery movement on all other machines than the controller.

At first I thought it was network communication problems… but I think the LAN (I’m using LAN only, 1GB ethernet) is plenty fast. I think the jitter is from physics in scripts and the rigidbody that are fighting against the Network movement control…

How are you supposed to deactivate the physics of a NON-controller GameObject? I’ve looked at disabling rigidbody, you can’t. I set the mass to 0, got an error, near 0 crashes the editor. I tried to delete it, but scripts depend on it, and it won’t let me delete (using: Destroy(rigidbody); ) EVEN THOUGH I have disabled the scripts. So I actually destroy the scripts, but my game objects are intricate and have a lot of interdependent scripts… This seems like a bad way to do this… destroying scripts… and also klugy.

HOW DO PEOPLE DO THIS?

Turn the rigidbody into a kinetmatic one. Assuming you are using the unity networking, on the same gameobject which has the networkview and the rigidbody, have a script which does this in Start:

rigidbody.isKinematic = !networkView.isMine;