I have a player prefab, which has Network Identity (Local Player Authority = true), Network transform and PlayerMovmentControl script:
using UnityEngine;
using UnityEngine.Networking;
public class PlayerMovmentControl : NetworkBehaviour {
public float m_Speed = 10f;
public float m_TurnSpeed = 180f;
private Rigidbody m_Rigidbody;
private float m_ForwardMovmentValue;
private float m_SidewardMovmentValue;
private float m_TurnValue;
private void Awake()
{
m_Rigidbody = GetComponent<Rigidbody>();
}
private void OnEnable()
{
m_ForwardMovmentValue = 0f;
m_SidewardMovmentValue = 0f;
}
void Update () {
if (isLocalPlayer)
{
m_ForwardMovmentValue = Input.GetAxis("Vertical");
m_SidewardMovmentValue = Input.GetAxis("Horizontal");
m_TurnValue = Input.GetAxis("Mouse X");
}
}
private void FixedUpdate()//Moving and turn the player
{
Move();
Turn();
}
private void Move()
{
Vector3 movment = (transform.forward * m_ForwardMovmentValue + transform.right * m_SidewardMovmentValue) * m_Speed * Time.deltaTime;
m_Rigidbody.MovePosition(m_Rigidbody.position + movment);
}
private void Turn()
{
float turn = m_TurnValue * m_TurnSpeed * Time.deltaTime;
Quaternion turnRotation = Quaternion.Euler(0f, turn, 0f);
m_Rigidbody.MoveRotation(m_Rigidbody.rotation * turnRotation);
}
}
There is a Network Manager with player prefab registered.
In game only rotation is synchronized but not movement. What am I doing wrong?