예제 #1
0
    void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Player")
        {
            float   dotProductValue;
            Vector3 playerDir;
            playerDir = (GameController.instance.Player.transform.position - this.transform.position).normalized;


            dotProductValue = Vector3.Dot(playerDir, transform.forward);

            if (dotProductValue >= Mathf.Cos(Mathf.Deg2Rad * angle))
            {
                //damage player
                isInZone = true;
                Debug.Log("Player in the damage zone");
                other.GetComponent <PlayerHealthScript>().Damage((int)damage);
                StartCoroutine(EnemyCombat.KnockbackEntity(GameController.instance.Player.gameObject, this.gameObject.transform.position, playerKnockBackSpeed));
            }
            else
            {
                isInZone = false;
            }
        }
    }
예제 #2
0
    public void Explode()
    {
        Vector3        epicenter     = this.gameObject.transform.position;
        List <EnemyAI> targetObjects = new List <EnemyAI>();


        Collider[] colliders = Physics.OverlapSphere(epicenter, enemyCombat.explosionRange, 1 << 8);

        foreach (Collider targetEntity in colliders)
        {
            targetObjects.Add(targetEntity.gameObject.GetComponent <EnemyAI>());
        }



        /*
         * foreach (EnemyAI enemy in EnemySpawner.instance.enemiesInTheScene)
         * {
         *  if (GetPreciseDistance(this.transform.position, enemy.transform.position) < enemyCombat.explosionRange && enemy.gameObject!=this.gameObject)
         *  {
         *
         *          targetObjects.Add(this);
         *
         *      Debug.Log("adding enemies to explosion list ");
         *  }
         * }
         * foreach (EnemyAI enemy in EnemySpawner.instance.UtilityStatesInTheScene)
         * {
         *  if (GetPreciseDistance(this.transform.position, enemy.transform.position) < enemyCombat.explosionRange && enemy.gameObject!=this.gameObject)
         *  {
         *      targetObjects.Add(this);
         *  }
         * }
         */
        Debug.Log(targetObjects);
        explosionObjects = targetObjects;

        foreach (EnemyAI target in targetObjects)
        {
            Debug.Log(target.gameObject);

            target.enemyHealthSystem.Damage(4);

            if (target.canBeKnocked)
            {
                StartCoroutine(EnemyCombat.KnockbackEntity(target.gameObject, epicenter, 20, 0.3f));
            }
        }

        DestroyUtility();
    }
예제 #3
0
    private void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Player")
        {
            //Damage the player
            Debug.Log("Player Hit by projectile");
            StartCoroutine(EnemyCombat.KnockbackEntity(GameController.instance.Player.gameObject, this.gameObject.transform.position, playerKnockBackSpeed));
            GameController.instance.Player.GetComponent <PlayerHealthScript>().Damage((int)projectileDamage);
            Destroy(this.gameObject);
        }
        else if (other.tag != "Enemy")
        {
            //Add some sort of minor explosion effect

            Destroy(this.gameObject);
        }
    }