/// <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));
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        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
        }
Пример #4
0
        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
        }
Пример #6
0
 public bool IsWithinPersonalSpace(Vector3 position)
 {
     //return ProximityHelpers.IsWithinDistance(transform, position, SqrPersonalSpaceMagnitude);
     return(ProximityHelpers.IsWithinDistance(ColliderComponent, position, SqrPersonalSpaceMagnitude));
 }