Example #1
0
    // Update is called once per frame

    void OnTriggerEnter2D(Collider2D other)
    {
        Enemy       enemy = other.GetComponent <Enemy>();
        Rigidbody2D rigid = other.GetComponent <Rigidbody2D>();
        EnemyAttack EA    = other.GetComponent <EnemyAttack>();
        AIBrain     AI    = other.GetComponent <AIBrain>();

        if (fromPlayer)
        {
            if (other.tag != "BulletFromPlayer" && other.tag != "Player" && other.tag != "Coin")
            {
                if (enemy != null)
                {
                    enemy.TakeDamage(damage);
                    GameObject.FindObjectOfType <money>().TotalDamageDealt += damage;
                }
                if (EA != null)
                {
                    EA.GotKnocked(10f, 2f);

                    objectPooler.Instance.SpawnFromPool("EnemyBlood", transform.position, Quaternion.identity * Quaternion.Euler(0f, 90f, 0)).GetComponent <ParticleSystem>().Play();
                }
                if (AI != null)
                {
                    AI.GotHitBy(Name, damage);
                }
                this.gameObject.SetActive(false);
            }
            if (other.tag != "Bullet")
            {
                //objectPooler.Instance.SpawnFromPool("Impact Effect", transform.position, Quaternion.identity * Quaternion.LookRotation(forceVector) * Quaternion.Euler(180f, 0f, 0)).GetComponent<ParticleSystem>().Play();
            }
        }
        else
        {
            if (other.tag != "Bullet" && other.tag != "Enemy" && other.tag != "Coin")
            {
                if (enemy != null)
                {
                    enemy.TakeDamage(damage);
                }
                if (rigid != null)
                {
                    rigid.AddForce(transform.GetComponent <Rigidbody2D>().velocity *force, ForceMode2D.Force);
                }
                objectPooler.Instance.SpawnFromPool("Impact Effect", transform.position, Quaternion.identity * Quaternion.LookRotation(forceVector) * Quaternion.Euler(180f, 0f, 0)).GetComponent <ParticleSystem>().Play();
                if (other.CompareTag("Player"))
                {
                    objectPooler.Instance.SpawnFromPool("EnemyBlood", transform.position, Quaternion.identity * Quaternion.Euler(0, 90f, 0)).GetComponent <ParticleSystem>().Play();
                }
                this.gameObject.SetActive(false);
            }
        }
    }
Example #2
0
    IEnumerator RaycastShoot()
    {
        for (int i = 0; i < soVienBanRa1Luc; i++)
        {
            if (lineRenderer.Length > 0)
            {
                lineRenderer[i].SetPosition(0, firepos.position);
            }
            if (i > 1)
            {
                CalculateSpreadShotgun();
            }
            else
            {
                CalculateSpread();
            }
            RaycastHit2D hitInfo             = Physics2D.Raycast(firepos.position, randomRotation * firepos.up, lengthRayCast);
            RaycastHit2D fromPlayertoFirePos = Physics2D.Raycast(transform.position, firepos.position - transform.position, Vector2.Distance(firepos.position, transform.position), NotPlayer);
            if (fromPlayertoFirePos && fromPlayertoFirePos.transform.tag != "Player")
            {
                Enemy enemyClose = fromPlayertoFirePos.transform.GetComponent <Enemy>();
                if (enemyClose != null)
                {
                    enemyClose.TakeDamage(damage);
                    gameObject.GetComponentInParent <money>().TotalDamageDealt += damage;
                    objectPooler.Instance.SpawnFromPool("Impact Effect", fromPlayertoFirePos.point, Quaternion.LookRotation(fromPlayertoFirePos.normal)).GetComponent <ParticleSystem>().Play();
                    if (fromPlayertoFirePos.transform.gameObject.GetComponent <EnemyAttack>() != null)
                    {
                        fromPlayertoFirePos.transform.gameObject.GetComponent <EnemyAttack>().GotKnocked(kBForce, dazeTime);
                        objectPooler.Instance.SpawnFromPool("EnemyBlood", fromPlayertoFirePos.point, Quaternion.LookRotation(fromPlayertoFirePos.normal)).GetComponent <ParticleSystem>().Play();
                    }
                }
                AIBrain AI = hitInfo.transform.GetComponent <AIBrain>();
                if (AI != null)
                {
                    AI.GotHitBy(sound + Name, damage);
                }
            }
            if (hitInfo)
            {
                Enemy enemy = hitInfo.transform.GetComponent <Enemy>();
                if (enemy != null)
                {
                    enemy.TakeDamage(damage);
                    gameObject.GetComponentInParent <money>().TotalDamageDealt += damage;
                    objectPooler.Instance.SpawnFromPool("Impact Effect", hitInfo.point, Quaternion.LookRotation(hitInfo.normal)).GetComponent <ParticleSystem>().Play();
                    if (hitInfo.transform.gameObject.GetComponent <EnemyAttack>() != null)
                    {
                        hitInfo.transform.gameObject.GetComponent <EnemyAttack>().GotKnocked(kBForce, dazeTime);
                        objectPooler.Instance.SpawnFromPool("EnemyBlood", hitInfo.point, Quaternion.LookRotation(hitInfo.normal)).GetComponent <ParticleSystem>().Play();
                    }
                }
                AIBrain AI = hitInfo.transform.GetComponent <AIBrain>();
                if (AI != null)
                {
                    AI.GotHitBy(sound + Name, damage);
                    if (IsC)
                    {
                        randomDestinationAI RDAI = hitInfo.transform.GetComponent <randomDestinationAI>();
                        if (RDAI != null)
                        {
                            RDAI.stop = true;
                        }
                    }
                    if (IsG)
                    {
                        randomDestinationAI RDAI = hitInfo.transform.GetComponent <randomDestinationAI>();
                        if (RDAI != null)
                        {
                            RDAI.quarantine = true;
                        }
                    }
                }
                if (lineRenderer.Length > 0)
                {
                    lineRenderer[i].SetPosition(1, hitInfo.point);
                }
            }
            else
            {
                if (lineRenderer.Length > 0)
                {
                    lineRenderer[i].SetPosition(1,
                                                new Vector2(lengthRayCast * Mathf.Cos(Mathf.Deg2Rad * (firepos.eulerAngles.z + currentSpreadZ + 90f)) + firepos.position.x, lengthRayCast * Mathf.Sin(Mathf.Deg2Rad * (firepos.eulerAngles.z + currentSpreadZ + 90f)) + firepos.position.y));
                }
            }
        }
        if (lineRenderer.Length > 0)
        {
            for (int i = 0; i < lineRenderer.Length; i++)
            {
                lineRenderer[i].enabled = true;
            }
        }
        if (MuzzleFlash != null)
        {
            MuzzleFlash.SetActive(true);
        }
        yield return(new WaitForSeconds(0.02f));

        if (lineRenderer.Length > 0)
        {
            for (int i = 0; i < lineRenderer.Length; i++)
            {
                lineRenderer[i].enabled = false;
            }
        }
        if (MuzzleFlash != null)
        {
            MuzzleFlash.SetActive(false);
        }
    }