48 lines
1.0 KiB
C#
48 lines
1.0 KiB
C#
using Mirror;
|
|
using UnityEngine;
|
|
using UnityEngine.AI;
|
|
using UnityEngine.InputSystem;
|
|
|
|
public class UnitMovement : NetworkBehaviour
|
|
{
|
|
[SerializeField] private NavMeshAgent _navMeshAgent;
|
|
|
|
private Camera _camera;
|
|
private Mouse _mouse;
|
|
|
|
#region Server
|
|
|
|
[Command] private void CmdMove(Vector3 destination)
|
|
{
|
|
if (NavMesh.SamplePosition(destination, out NavMeshHit hit, 1f, NavMesh.AllAreas))
|
|
{
|
|
_navMeshAgent.SetDestination(hit.position);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Client
|
|
|
|
public override void OnStartAuthority()
|
|
{
|
|
base.OnStartAuthority();
|
|
_camera = Camera.main;
|
|
_mouse = Mouse.current;
|
|
}
|
|
|
|
[ClientCallback]
|
|
private void Update()
|
|
{
|
|
if (!isOwned) return;
|
|
if (!_mouse.rightButton.wasPressedThisFrame) return;
|
|
Ray ray = _camera.ScreenPointToRay(_mouse.position.ReadValue());
|
|
|
|
if (Physics.Raycast(ray, out RaycastHit hit, Mathf.Infinity))
|
|
{
|
|
CmdMove(hit.point);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
} |