Example #1
0
 private void DetectPlayer()
 {
     if (m_currentTarget == null)
     {
         Collider2D col = Physics2D.OverlapCircle(transform.position, (m_spookyTimeManager.IsSpookyTimeActive()) ? m_spookyTimeDetectionRadius : m_detectionRange, m_detectionMask);
         if (col != null)
         {
             if (!Physics2D.Linecast(transform.position, col.transform.position, m_blockingMask))
             {
                 if (m_lostPlayer)
                 {
                     StopCoroutine(m_lostCoroutine);
                     m_lostPlayer = false;
                 }
                 m_currentTarget = col.gameObject;
                 m_aiCont.SetPlayerTransform(m_currentTarget.transform);
                 m_aiCont.ChangeState(AI_Controller.AIStates.CHASE);
             }
         }
     }
     else
     {
         Collider2D[] cols = Physics2D.OverlapCircleAll(transform.position, (m_spookyTimeManager.IsSpookyTimeActive()) ? m_spookyTimeDetectionRadius : m_detectionRange, m_detectionMask);
         bool         currentTargetInBounds = false;
         foreach (Collider2D col in cols)
         {
             if (col.gameObject == m_currentTarget)
             {
                 if (!Physics2D.Linecast(transform.position, col.transform.position, m_blockingMask))
                 {
                     currentTargetInBounds = true;
                     break;
                 }
             }
         }
         if (!currentTargetInBounds)
         {
             if (!m_lostPlayer)
             {
                 m_lostPlayer    = true;
                 m_lostCoroutine = StartCoroutine(LostTimer());
             }
         }
     }
 }