예제 #1
0
    // if an enemy is in the collision area, apply damage to that enemy
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.CompareTag("meleeEnemy"))
        {
            EnemyController meleeEnemy = collision.GetComponent <EnemyController>();
            meleeEnemy.TakeDamage(3);
            GameObject aoeEffect = Instantiate(explosion, transform.position, Quaternion.identity);
            aoeEffect.GetComponent <Animator>().SetTrigger("Explode");

            Destroy(aoeEffect, 1.0f);
        }

        if (collision.CompareTag("rangedEnemy"))
        {
            RangedEnemy rangedEnemy = collision.GetComponent <RangedEnemy>();
            rangedEnemy.TakeDamage(3);
            GameObject aoeEffect = Instantiate(explosion, transform.position, Quaternion.identity);
            aoeEffect.GetComponent <Animator>().SetTrigger("Explode");

            Destroy(aoeEffect, 1.0f);
        }

        if (collision.CompareTag("Boss"))
        {
            if (collision.name == "Flame Knight(Clone)")
            {
                FlameKnightController controller = collision.GetComponent <FlameKnightController>();
                controller.TakeDamage(3);
                GameObject aoeEffect = Instantiate(explosion, transform.position, Quaternion.identity);
                aoeEffect.GetComponent <Animator>().SetTrigger("Explode");

                Destroy(aoeEffect, 1.0f);
            }
        }
    }
예제 #2
0
    // this handles the bullet collision
    // if it hits an enemy it creates an explosion effect and does damage to the enemy
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.CompareTag("Collidables"))
        {
            Destroy(gameObject);
        }

        if (collision.CompareTag("meleeEnemy"))
        {
            // create AOE explosion effect
            Instantiate(aoeAttack, collision.transform.position, Quaternion.identity);
            Instantiate(explosionSound, collision.transform.position, Quaternion.identity);

            Destroy(gameObject);
            meleeEnemyController = collision.gameObject.GetComponent <EnemyController>();
            meleeEnemyController.TakeDamage(setDamage);
            RoomEvent.bulletsHitEnemy += 1;
            GameObject hitAnimation = Instantiate(bulletHitAnimation, collision.transform.position, Quaternion.identity);
            hitAnimation.GetComponent <Animator>().SetTrigger("BulletHit");
            Destroy(hitAnimation, 2.0f);
        }

        if (collision.CompareTag("rangedEnemy"))
        {
            // create AOE explosion effect
            Instantiate(aoeAttack, collision.transform.position, Quaternion.identity);
            Instantiate(explosionSound, collision.transform.position, Quaternion.identity);

            Destroy(gameObject);

            rangedEnemeyController = collision.gameObject.GetComponent <RangedEnemy>();
            rangedEnemeyController.TakeDamage(setDamage);
            RoomEvent.bulletsHitEnemy += 1;
            GameObject hitAnimation = Instantiate(bulletHitAnimation, collision.transform.position, Quaternion.identity);
            hitAnimation.GetComponent <Animator>().SetTrigger("BulletHit");
            Destroy(hitAnimation, 2.0f);
        }

        if (collision.CompareTag("Boss"))
        {
            print(collision.name);
            if (collision.name == "Flame Knight(Clone)")
            {
                FlameKnightController controller =
                    GameObject.FindGameObjectWithTag("Boss").GetComponent <FlameKnightController>();

                Instantiate(aoeAttack, transform.position, Quaternion.identity);
                Instantiate(explosionSound, collision.transform.position, Quaternion.identity);

                controller.TakeDamage(setDamage);

                GameObject hitAnimation = Instantiate(bulletHitAnimation, transform.position, Quaternion.identity);
                hitAnimation.GetComponent <Animator>().SetTrigger("BulletHit");
                Destroy(gameObject);
                Destroy(hitAnimation, 2.0f);
            }
        }
    }
예제 #3
0
    // checks the timers and either applies damage to the target or destroys the game object
    void Update()
    {
        audioSource.volume = 0.4f * GameController.sfxVolume;
        // run a check to see if it's time to kill the DOT
        if (runningSecondsToRunDOT <= 0)
        {
            Destroy(gameObject);
        }
        else
        {
            runningSecondsToRunDOT -= Time.deltaTime;
        }


        // run a check to see if it's time to apply damage
        if (runningSecondsToApplyDamage <= 0)
        {
            if (gameObject.transform.parent.CompareTag("meleeEnemy"))
            {
                EnemyController meleeEnemy = gameObject.transform.parent.GetComponent <EnemyController>();
                meleeEnemy.PlayPoisonDamageAnimation();
                audioSource.Play();
                meleeEnemy.TakeDamage(2);
            }
            else if (gameObject.transform.parent.CompareTag("rangedEnemy"))
            {
                RangedEnemy rangedEnemy = gameObject.transform.parent.GetComponent <RangedEnemy>();
                rangedEnemy.PlayPoisonDamageAnimation();
                audioSource.Play();
                rangedEnemy.TakeDamage(2);
            }
            else if (gameObject.transform.parent.CompareTag("Boss"))
            {
                if (gameObject.transform.parent.name == "Flame Knight(Clone)")
                {
                    FlameKnightController controller =
                        GameObject.FindGameObjectWithTag("Boss").GetComponent <FlameKnightController>();
                    controller.PlayPoisonDamageAnimation();
                    audioSource.Play();
                    controller.TakeDamage(2);
                }
            }
            // need to add this stuff to the boss(es).
            runningSecondsToApplyDamage = totalSecondsToApplyDamage;
        }
        else
        {
            runningSecondsToApplyDamage -= Time.deltaTime;
        }
    }