/// <summary> /// Damage is dealt to the AI. /// </summary> /// <param name="amount">Damage value</param> public void TakeDamage(float amount) { if (currArmour != null) { if (amount > currArmour.ArmourHealth) { Health -= amount - currArmour.ArmourHealth; } if (currArmour.ArmourHealth > 0) { currArmour.Damage(amount); } else { Health -= amount; } } else { Health -= amount; } if (Health <= 0) { SetToDying(); } }
private void OnCollisionEnter(Collision collision) { if (collision.gameObject.layer == LayerMask.NameToLayer("Player")) { // Damage player - caused by enemy shooting Player.GetInstanceHealth()?.Damage(damage); Score.IncreaseScore(ScoreValues.playerShot); } else if (collision.gameObject.layer == LayerMask.NameToLayer("Enemy")) { Armour armour = collision.gameObject.GetComponent <Armour>(); if (armour != null && armour.IsActive()) { // Damage armour - caused by player shooting armour?.Damage(damage); Score.IncreaseScore(ScoreValues.armouredEnemyShot); } else if (collision.gameObject.CompareTag("Head")) { EnemyHead enemyHead = collision.gameObject.GetComponent <EnemyHead>(); // Kill enemy with 1 shot enemyHead?.KillEnemy(); Score.IncreaseScore(ScoreValues.enemyHeadshot); } else if (collision.gameObject.CompareTag("HeadBoss")) { BossHead enemyHead = collision.gameObject.GetComponent <BossHead>(); // Damage enemy - caused by player shooting enemyHead?.DamageHead(damage); Score.IncreaseScore(ScoreValues.enemyHeadshot); } else { IEnemyController enemyController = collision.gameObject.GetComponent <IEnemyController>(); // Damage enemy - caused by player shooting enemyController?.DamageEnemy(damage); Score.IncreaseScore(ScoreValues.enemyShot); } } else if (collision.gameObject.layer == LayerMask.NameToLayer("Cover")) { Health coverHealth = collision.gameObject.GetComponent <Health>(); // Damage cover - caused by enemy shooting coverHealth?.Damage(damage); } // Destroy Bullet Destroy(gameObject); }