private void GetClosestThreat() { float closest = -1; var previousTarget = m_target; bool isNewTargetFound = false; for (int i = 0; i < m_threatList.Count; i++) { float currentDist = StaticUtil.FastDistance(this.transform.position, m_threatList[i].transform.position); if (currentDist > closest) { closest = currentDist; if (m_target != m_threatList[i] && !m_threatList[i].isDead) { m_target = m_threatList[i]; if (m_target != previousTarget) { m_attackRangeModifier = m_target.GetComponent <AgentAttackRangeModifier>(); } isNewTargetFound = true; } } } if (m_target.isDead && !isNewTargetFound) { m_target = m_treeOfLife; } }
private void StartChase() { GetClosestThreat(); if (m_target) { m_mood = Mood.Chase; m_attackRangeModifier = m_target.GetComponent <AgentAttackRangeModifier>(); } }