Esempio n. 1
0
    public void DamageEnemy(float damage)
    {
        if (enemyStats.currentHealth > 0)
        {
            enemyStats.currentHealth -= damage;
            anim.SetFloat("health", enemyStats.currentHealth);
        }

        if (enemyStats.currentHealth <= 0 && isDead == false) // If enemy health falls to 0 or less they will die
        {
            // Death sound
            audioManager.PlaySound(deathSoundName);

            // Camera Shake
            // cameraShake.Shake(_enemy.shakeAmt, _enemy.shakeLength);

            isDead = true;
            anim.SetBool("isDead", isDead);
            enemyMovementScript.currentState = EnemyMovement.State.Dead;

            levelExitScript.enemiesKilled++;
            if (levelExitScript.enemiesKilled == levelExitScript.enemyCount)
            {
                levelExitScript.KillAllEnemiesMissionComplete();
            }

            if (isAssassinationTarget)
            {
                levelExitScript.targetsAssassinated++;
            }

            if (levelExitScript.targetsAssassinated == levelExitScript.assassinationTargetCount)
            {
                levelExitScript.AssassinationMissionComplete();
            }

            thisEnemyCollider.direction = CapsuleDirection2D.Horizontal;
            thisEnemyCollider.offset    = new Vector2(3.43f, -19.05f);
            thisEnemyCollider.size      = new Vector2(46.55f, 10.41f);
        }
        else if (enemyStats.currentHealth > 0)
        {
            // Play damage sound
            audioManager.PlaySound(damageSoundName);
        }

        if (enemyStats.currentHealth <= 0) // If enemy is dead
        {
            if (enemyWeapon == null)
            {
                enemyWeapon       = enemyArm.transform.GetChild(0).gameObject;
                enemyWeaponScript = enemyWeapon.transform.GetComponent <EnemyWeapon>();
            }
            // Drop held weapon with current amount of ammo and specify the ammo type (so that it can be accessed when the player tries to pick up ammo in the WeaponPickup script's PickUpAmmo() method)
            lootDropScript.DropWeapon(enemyWeaponScript.currentAmmoAmount, enemyWeaponScript.clipSize, enemyWeaponScript.ammoType, enemyWeaponScript.damage, enemyWeaponScript.fireRate, enemyWeaponScript.isSilenced,
                                      enemyWeaponScript.hasIncreasedClipSize, enemyWeaponScript.clipSizeMultiplier, enemyWeaponScript.inaccuracyFactor, enemyWeaponScript.durability, enemyWeaponScript.hasAlteredDurability,
                                      enemyWeaponScript.durabilityMultiplier);

            lootBoxCollider.enabled = true;
            sightCollider.enabled   = false;
            hearingCollider.enabled = false;
        }
    }