Files
TheDeclineOfWarriors/Assets/Scripts/Players/CameraFollow.cs
T
Alexander Borisov 055b87a85c add voxel world runtime navmesh sidecar
Introduce a DI-wired NavMesh sidecar for voxel chunks so world streaming stays actor-driven and world state remains the canonical source for navigation rebuilds.
2026-04-08 11:28:39 +03:00

45 lines
1.4 KiB
C#

using FishNet.Object;
using UnityEngine;
namespace Players
{
[RequireComponent(typeof(Camera))]
public sealed class CameraFollow : NetworkBehaviour
{
[SerializeField] private Vector3 _offset = new(-10, 15, -10);
[SerializeField] private Vector3 _rotation = new(45, 45, 0);
[SerializeField] private Transform _target;
[SerializeField, Range(0f, 360f)] private float _orbitAngle;
[SerializeField] private float _mouseOrbitSensitivity = 180f;
private float _mouseOrbitAngle;
public Transform Target => _target != null ? _target : transform;
public override void OnStartClient()
{
base.OnStartClient();
if(!IsOwner)
return;
Camera cam = GetComponent<Camera>();
cam.enabled = true;
}
private void Update()
{
if(!IsOwner || _target == null)
return;
if (Input.GetMouseButton(1))
_mouseOrbitAngle += Input.GetAxis("Mouse X") * _mouseOrbitSensitivity * Time.deltaTime;
var orbitRotation = Quaternion.Euler(0f, _orbitAngle + _mouseOrbitAngle, 0f);
transform.position = _target.position + orbitRotation * _offset;
transform.rotation = orbitRotation * Quaternion.Euler(_rotation);
}
}
}