/// <summary> /// Check if target is within line of sight /// </summary> private bool IsWithinSight(Transform target, string tag = "", ProximityHelpers.DistanceDirection distanceDirection = ProximityHelpers.DistanceDirection.ALL) { if (target == null || (!string.IsNullOrEmpty(tag) && target.tag != tag)) { return(false); } return(ProximityHelpers.IsWithinSight(transform, target, FieldOfViewAngle, SqrViewMagnitude, distanceDirection)); }
/// <summary> /// Check if bot is within desired distance of a position /// </summary> public bool IsWithinDistance(DistanceType distanceType, Vector3 position, ProximityHelpers.DistanceDirection direction = ProximityHelpers.DistanceDirection.ALL, float percent = 1.0f) { float sqrMagnitude = 0f; switch (distanceType) { case DistanceType.AT_POSITION: if (SqrAtPositionErrorMargin == 0) { return(transform.position == position); } sqrMagnitude = SqrAtPositionErrorMargin; break; case DistanceType.PERSONAL_SPACE: sqrMagnitude = SqrPersonalSpaceMagnitude; break; case DistanceType.INTERACTION: sqrMagnitude = SqrInteractionMagnitude; break; case DistanceType.AWARENESS: case DistanceType.OUTSIDE_AWARENESS: sqrMagnitude = SqrAwarenessMagnitude; break; } bool result = ProximityHelpers.IsWithinDistance(ColliderComponent, position, sqrMagnitude * percent, direction) || ProximityHelpers.IsWithinDistance(transform.position, position, sqrMagnitude * percent, direction); if (distanceType == DistanceType.OUTSIDE_AWARENESS) { return(!result); } return(result); }
protected virtual void OnDrawGizmos() { #if UNITY_EDITOR ProximityHelpers.DrawGizmoProximity(transform, SqrAwarenessMagnitude, IsWithinDistance(DistanceType.AWARENESS)); // IsWithinAwarenessDistance()); ProximityHelpers.DrawGizmoProximity(transform, SqrInteractionMagnitude, IsWithinDistance(DistanceType.INTERACTION)); //IsWithinInteractionDistance()); ProximityHelpers.DrawGizmoProximity(transform, SqrPersonalSpaceMagnitude, IsWithinDistance(DistanceType.PERSONAL_SPACE)); ///IsWithinPersonalSpace()); if (FocusedOnTransform != null) { UnityEditor.Handles.color = Color.yellow; DrawGizmoPositionPoint(FocusedOnTransform.position); } else if (FocusedOnPosition != null) { UnityEditor.Handles.color = new Color(1f, 1f, 0.008f, 0.55f); //UnityEditor.Handles.DrawSolidDisc(FocusedOnPosition.Value, Vector3.up, 0.25f); DrawGizmoPositionPoint(FocusedOnPosition.Value); UnityEditor.Handles.DrawLine(transform.position, FocusedOnPosition.Value); } #endif }
void OnDrawGizmos() { #if UNITY_EDITOR ProximityHelpers.DrawGizmoProximity(transform, SqrInteractionMagnitude, IsWithinInteractionDistance()); if (FocusedOnTransform != null) { var oldColor = UnityEditor.Handles.color; UnityEditor.Handles.color = IsWithinInteractionDistance() ? Color.red : Color.white; UnityEditor.Handles.DrawLine(transform.position, FocusedOnTransform.position); UnityEditor.Handles.color = new Color(1f, 0f, 0f, 0.25f); UnityEditor.Handles.DrawSolidDisc(FocusedOnTransform.position, Vector3.up, 0.25f); UnityEditor.Handles.color = oldColor; } else if (FocusedOnPosition != null) { UnityEditor.Handles.color = new Color(1f, 1f, 0.008f, 0.55f); UnityEditor.Handles.DrawSolidDisc(FocusedOnPosition.Value, Vector3.up, 0.25f); } ProximityHelpers.DrawGizmoProximity(transform, SqrPersonalSpaceMagnitude, IsWithinPersonalSpace()); #endif }
// Draw the line of sight representation within the scene window void OnDrawGizmos() { #if UNITY_EDITOR ProximityHelpers.DrawGizmoLineOfSight(transform, FieldOfViewAngle, ViewMagnitude, IsWithinSight()); #endif }
public bool IsWithinPersonalSpace(Vector3 position) { //return ProximityHelpers.IsWithinDistance(transform, position, SqrPersonalSpaceMagnitude); return(ProximityHelpers.IsWithinDistance(ColliderComponent, position, SqrPersonalSpaceMagnitude)); }