using FishNet.Object; using UnityEngine; namespace FishNet.Example.ColliderRollbacks { /// /// DEMO. CODE IS NOT OPTIMIZED. /// Aims the camera. /// public class Aim : NetworkBehaviour { public PlayerCamera PlayerCamera { get; private set; } private readonly Vector3 _offset = new(0f, 1.65f, 0f); public override void OnStartClient() { if (base.IsOwner) PlayerCamera = Camera.main.transform.GetComponent(); } private void Update() { if (!base.IsOwner || PlayerCamera == null) return; Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; MoveAim(); MoveCamera(); } /// /// Aims camera. /// private void MoveAim() { float speed = 2f; //Yaw. transform.Rotate(new(0f, Input.GetAxis("Mouse X") * speed, 0f)); //Pitch. float pitch = PlayerCamera.transform.eulerAngles.x - (Input.GetAxis("Mouse Y") * speed); /* If not signed on X then make it * signed for easy clamping. */ if (pitch > 180f) pitch -= 360f; pitch = Mathf.Clamp(pitch, -89f, 89f); PlayerCamera.transform.eulerAngles = new(pitch, transform.eulerAngles.y, transform.eulerAngles.z); } /// /// Moves camera. /// private void MoveCamera() { PlayerCamera.transform.position = transform.position + _offset; PlayerCamera.transform.rotation = Quaternion.Euler(PlayerCamera.transform.eulerAngles.x, transform.eulerAngles.y, transform.eulerAngles.z); } } }