Authoritative server - rotation

Alright, so I’ve been trying to do this all day and no luck at all. I understood how the RPC and the network view components work. I followed the M2H tutorial and all became pretty clear to me. But there’s something I still can’t do and that is make the player rotate.

Here’s a little part of the code for you to see what I tried last (wasn’t working):

if(owner !=null  Network.player == owner){
SpeedMod();
if(lastForward != moveForward || lastSideways != moveSideways)
{
lastForward = moveSideways;
lastSideways = moveForward;


if(Network.isServer){
				SendMovementInput(moveSideways, moveForward, inputRotate);
			}else if(Network.isClient){
			transform.Rotate(0, Input.GetAxis ("Mouse X") *5, 0); 
			inputRotate = Input.GetAxis ("Mouse X");
			networkView.RPC("SendMovementInput", RPCMode.Server,moveSideways, moveForward, inputRotate);
			}

}

}

if(Network.isServer){	
	var moveDir = new Vector3(serverSideways, gravity, serverForward);
	transform.Translate(moveDir*Time.deltaTime);
	transform.Rotate(0, serverRotate * 5, 0); 
	}

}

@RPC
function SendMovementInput(moveSideways : float, moveForward : float, inputRotate : float){	
	serverSideways = moveSideways;
	serverForward = moveForward;
	serverRotate = inputRotate;
}



function OnSerializeNetworkView(stream : BitStream, info : NetworkMessageInfo)
{
	if (stream.isWriting){
		
		var pos : Vector3 = transform.position;	
		stream.Serialize(pos);
		stream.Serialize(rot);
		
				
	}else{
		
		
		var posReceive : Vector3 = Vector3.zero;	
		stream.Serialize(posReceive);
		
		transform.position = Vector3.Lerp(transform.position, posReceive, 0.9);	
		
	}
}

Can you help me out with this with some example code or give me a link to an existing topic about this, because I couldn’t find one for rotation.

maybe this might help you

function Update()
{
	if(owner!=null  Network.player==owner)
	{
		if(Input.GetButtonDown("Fire1"))
        {
            netPlayer = Network.player;
            networkView.RPC("Shoot", RPCMode.All, netPlayer);
        }
		var HInput : float = Input.GetAxis("Horizontal");
		var VInput : float = Input.GetAxis("Vertical");
		if(lastClientHInput!=HInput || lastClientVInput!=VInput )
		{
			lastClientHInput = HInput;
			lastClientVInput = VInput;			
			
			if(Network.isServer)
			{
				SendMovementInput(HInput, VInput);
			}
			else if(Network.isClient)
			{
				SendMovementInput(HInput, VInput);
				networkView.RPC("SendMovementInput", RPCMode.Server, HInput, VInput);
			}
		}
	}
	if(Network.isServer)
	{
		var moveDirection : Vector3 = new Vector3(0, 0, serverCurrentVInput);
		var speed : float = 5;
		transform.Rotate(0, serverCurrentHInput * 5 * Time.deltaTime * 20, 0);
		transform.Translate(speed * moveDirection * Time.deltaTime);
	}
}

@RPC
function SendMovementInput(HInput : float, VInput : float)
{
	serverCurrentHInput = HInput;
	serverCurrentVInput = VInput;
}

function OnSerializeNetworkView(stream : BitStream, info : NetworkMessageInfo)
{
	if (stream.isWriting)
	{
		var pos : Vector3 = transform.position;	
		var yRot : Quaternion = transform.rotation;
		stream.Serialize(pos);
		stream.Serialize(yRot);
	}
	else
	{
		var posReceive : Vector3 = Vector3.zero;
		var yRotReceive : Quaternion = transform.rotation;
		stream.Serialize(posReceive);
		stream.Serialize(yRotReceive);
		transform.position = posReceive;		
		transform.rotation = yRotReceive;
		transform.position = Vector3.Lerp(transform.position, posReceive, 0.9);
	}
}

Yay! Thanks, It helped. I was pretty close though :smile: