using UnityEngine; public class ViewAlignmentDetector { private readonly Transform _observer; private readonly Transform _target; private readonly Transform _viewPoint; public float positionErrorMargin = 1.0f; public float viewErrorMargin = 0.1f; public ViewAlignmentDetector(Transform observer, Transform target, Transform viewPoint) { _observer = observer; _target = target; _viewPoint = viewPoint; } public bool IsAligned() { Vector3 directionToTarget = (_target.position - _observer.position).normalized; Vector3 directionToViewPoint = (_viewPoint.position - _observer.position).normalized; float distanceToTarget = Vector3.Distance(_observer.position, _target.position); float distanceToViewPoint = Vector3.Distance(_observer.position, _viewPoint.position); bool isDirectionAligned = Vector3.Dot(directionToTarget, directionToViewPoint) >= (1 - viewErrorMargin); bool isDistanceAligned = Mathf.Abs(distanceToTarget - distanceToViewPoint) <= positionErrorMargin; return isDirectionAligned && isDistanceAligned; } }