protected virtual void Update() { if (health <= 0) { Destroy(gameObject); return; } else { if (moving || rotatingBody || rotatingTurret || !reloadingComplete || aiming) { deviation = Mathf.Lerp(deviation, 0.2f, 2 * Time.deltaTime); } else { deviation = Mathf.Lerp(deviation, 0, 2 * Time.deltaTime); } } //need to get the enemies from the triggers in the body and turret. Use the getter function in the tirggercall for (int i = 0; i < bodyTriggerRef.GetEnemies().Count; i++) { if (!enemies.Contains(bodyTriggerRef.GetEnemies()[i])) { enemies.Add(bodyTriggerRef.GetEnemies()[i]); } } for (int i = 0; i < turretTriggerRef.GetEnemies().Count; i++) { if (!enemies.Contains(turretTriggerRef.GetEnemies()[i])) { enemies.Add(turretTriggerRef.GetEnemies()[i]); } } if (enemies.Count > 0) { for (int i = 0; i < enemies.Count; i++) { List <GameObject> turretEnemyList = turretTriggerRef.GetEnemies(); List <GameObject> bodyEnemyList = bodyTriggerRef.GetEnemies(); if (!turretEnemyList.Contains(enemies[i]) && !bodyEnemyList.Contains(enemies[i])) { Debug.Log("enemy no longer in vision distance"); enemies.Remove(enemies[i]); enemies.TrimExcess(); } } } for (int i = 0; i < bodyTriggerRef.GetWorldProps().Count; i++) { if (!obstacles.Contains(bodyTriggerRef.GetWorldProps()[i])) { obstacles.Add(bodyTriggerRef.GetWorldProps()[i]); } } for (int i = 0; i < turretTriggerRef.GetWorldProps().Count; i++) { if (!obstacles.Contains(turretTriggerRef.GetWorldProps()[i])) { obstacles.Add(turretTriggerRef.GetWorldProps()[i]); } } }