Hi guys, I made a project with a car controller and I want to implement the multiplayer logic. First I used the client Transform Networks and everything worked fine, but now I would to use an authorative Server. In my script I have a function called Move: Code (CSharp): private void MovePlayer() { if (!IsOwner) return; GetInput(); HandleMotor(); HandleSteering(); UpdateWheels(); } private void FixedUpdate() { if (IsOwner) { MovePlayer(); } } I'm not sure about how to procede, initially I tried to use the clientRPC but in any case the client does not move.
Ok little update, I tried removing my script and using one based on the Character Controller and serverRPC and it actually works. This is a part of this script: Code (CSharp): void Update() { if (IsClient && IsOwner) { ClientInput(); } ClientMoveAndRotate(); } private void ClientMoveAndRotate() { if (networkPositionDirection.Value != Vector3.zero) { characterController.SimpleMove(networkPositionDirection.Value); } if (networkRotationDirection.Value != Vector3.zero) { transform.Rotate(networkRotationDirection.Value, Space.World); } } private void ClientInput() { // left & right rotation Vector3 inputRotation = new Vector3(0, Input.GetAxis("Horizontal"), 0); // forward & backward direction Vector3 direction = transform.TransformDirection(Vector3.forward); float forwardInput = Input.GetAxis("Vertical"); Vector3 inputPosition = direction * forwardInput; // let server know about position and rotation client changes if (oldInputPosition != inputPosition || oldInputRotation != inputRotation) { oldInputPosition = inputPosition; UpdateClientPositionAndRotationServerRpc(inputPosition * walkSpeed, inputRotation * rotationSpeed); } } [ServerRpc] public void UpdateClientPositionAndRotationServerRpc(Vector3 newPosition, Vector3 newRotation) { networkPositionDirection.Value = newPosition; networkRotationDirection.Value = newRotation; } In this case networkPositionDirection and networkRotationDirection are NetworkVariables. Now, my question is, how I can move a player not based on the Character Controller, but based on stuff like MotorTorque and WheelColliders? I have to pass them like NetworkVariables?