Unity 5 Physics on the Server but not on the Client
I have a client server scenario in Unity 5. On the server are buttons which when pressed move a physics object up left right and down (this is 2d btw). I wish to have distributed physics in this project where the server handles all physics operations and simply updates the client which cannot handle any physics. Ive tried to go about this by using RPC calls. So as seen by the code below i've tried sending a message to the client with the position, rotation and velocity whenever the server physics object moved to make it seem as though the client carried out the physics operation. However when running this, when the server object first moves nothing happens on the client, and when the server object moves again then the client object moves but the speed at which it moves is not similar to the server. I realise I will need some form of synchronisation later on, but to get it down as simply as possible would be a huge help. Where have I went wrong here? Is distributed physics not that simple? Do i need to send other details besides position, rotation and velocity? Any help would be greatly appreciated!
[ClientRpc]
void RpcSendPhysicsInfo(Vector2 Pos, float Rot, Vector2 Velo)
{
Debug.Log ("Received");
moveableBarrel.GetComponent<Rigidbody2D> ().position = Pos;
moveableBarrel.GetComponent<Rigidbody2D> ().rotation = Rot;
moveableBarrel.GetComponent<Rigidbody2D> ().velocity = Velo;
}
void OnGUI()
{
if (isServer)
{
if (GUI.Button (new Rect(0,Screen.height/3, 150, 30),"Move Barrel Right"))
{
moveableBarrel.GetComponent<Rigidbody2D>().AddForce(new Vector2(50, 0));
//RpcSendPhysicsInfo(physics info)
RpcSendPhysicsInfo(moveableBarrel.GetComponent<Rigidbody2D>().position, moveableBarrel.GetComponent<Rigidbody2D>().rotation,
moveableBarrel.GetComponent<Rigidbody2D>().velocity);
}