same movement as Unity editor control.

I just tried to use those standard movement script from unity in my project.
and this one support NetworkIdentity (optional)
ObserverMovement.cs
using UnityEngine;
using UnityEngine.Networking;
public class ObserverMovement : MonoBehaviour
{
[Header("Common")]
public float m_Speed = 0.5f;
public float m_HighSpeed = 2f;
public bool m_AsFlightControl = false;
[Header("Optional")]
public NetworkIdentity m_NetworkIdentity;
public Camera m_Camera;
private float m_CurrentSpeed = 0f;
private bool m_ToggleSpeed = false;
private Vector3 m_LocalTranslate = Vector3.zero;
private Vector2 m_LocalLook = Vector2.zero;
void OnValidate()
{
if (m_NetworkIdentity == null)
{
m_NetworkIdentity = GetComponent<NetworkIdentity>();
}
if (m_NetworkIdentity != null && m_Camera == null)
{
m_Camera = GetComponentInChildren<Camera>(true);
}
}
void InputUpdate()
{
// Mouse look
if (Input.GetMouseButtonDown(1) && Cursor.lockState != CursorLockMode.Locked)
{
Cursor.lockState = CursorLockMode.Locked;
}
if (Input.GetMouseButtonUp(1) && Cursor.lockState != CursorLockMode.None)
{
Cursor.lockState = CursorLockMode.None;
}
if (Cursor.lockState == CursorLockMode.Locked)
{
m_LocalLook.x = -Input.GetAxis("Mouse Y");
m_LocalLook.y = Input.GetAxis("Mouse X");
}
// Speed
if (!m_ToggleSpeed &&
Input.GetKeyDown(KeyCode.LeftShift) || Input.GetKeyDown(KeyCode.RightShift))
{
m_ToggleSpeed = true;
}
else if (m_ToggleSpeed &&
(Input.GetKeyUp(KeyCode.LeftShift) || Input.GetKeyUp(KeyCode.RightShift)) &&
!(Input.GetKey(KeyCode.LeftShift) && Input.GetKey(KeyCode.RightShift)))
{
m_ToggleSpeed = false;
}
m_CurrentSpeed = (m_ToggleSpeed) ? m_HighSpeed : m_Speed;
// Movement
if (Input.GetAxis("Vertical") != 0)
{
m_LocalTranslate += transform.forward * m_CurrentSpeed * Input.GetAxis("Vertical");
}
if (Input.GetAxis("Horizontal") != 0)
{
m_LocalTranslate += transform.right * m_CurrentSpeed * Input.GetAxis("Horizontal");
}
if (Input.GetKey(KeyCode.E) && !Input.GetKey(KeyCode.Q))
{
m_LocalTranslate += transform.up * m_CurrentSpeed * 0.5f;
}
if (Input.GetKey(KeyCode.Q) && !Input.GetKey(KeyCode.E))
{
m_LocalTranslate += -transform.up * m_CurrentSpeed * 0.5f;
}
}
void Update()
{
if(m_NetworkIdentity != null && !m_NetworkIdentity.isLocalPlayer)
{
if (m_Camera != null)
m_Camera.enabled = false;
enabled = false;
return;
}
InputUpdate();
// Apply
transform.Translate(m_LocalTranslate, Space.World);
if (Cursor.lockState == CursorLockMode.Locked)
{
transform.Rotate(Vector3.right, m_LocalLook.x, Space.Self);
transform.Rotate(Vector3.up, m_LocalLook.y, (m_AsFlightControl) ? Space.Self : Space.World);
}
// Reset
m_LocalTranslate = Vector3.zero;
m_LocalLook = Vector2.zero;
}
}