using UnityEngine; public class FaceTargetXZ : MonoBehaviour { public Transform target; public Vector3 targetPos; void LateUpdate() { Vector3 _facingDir = transform.forward; if (target != null) { _facingDir = (target.position - transform.position).normalized; } else if (targetPos != Vector3.zero) { _facingDir = (targetPos - transform.position).normalized; } else { _facingDir = transform.forward; } _facingDir.y = 0; RaycastHit _hitInfo; if (Physics.Raycast(transform.position + _facingDir + new Vector3(0, 20, 0), Vector3.down, out _hitInfo, 50, LayerUtility.WalkbleMask)) { transform.LookAt(_hitInfo.point); } else { if (transform.forward != _facingDir && _facingDir != Vector3.zero) { transform.forward = _facingDir; } } } private void OnDestroy() { target = null; } }