示例#1
0
    private void ExplosionEgg()
    {
        int layerMask = MyUtils.GetLayerMaskByString("Enemy");


        Collider2D[] colls = Physics2D.OverlapCircleAll(this.transform.position, explosionRadius, layerMask);
        if (colls == null)
        {
            return;
        }

        for (int i = 0; i < colls.Length; i++)
        {
            CharacterInfo characterInfo = colls[i].gameObject.GetComponent <CharacterInfo>();
            if (characterInfo != null)
            {
                characterInfo.GetDamage(power);
            }
        }

        //이펙트
        ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();

        if (effect != null)
        {
            effect.Initilaize(this.transform.position, "bazooka", 0.5f, explosionRadius * 2f);
        }

        //사운드
        SoundManager.Instance.PlaySoundEffect("explosion");

        Destroy(this.gameObject);
    }
示例#2
0
    protected void ShowEffect()
    {
        //이펙트 호출
        ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();

        if (effect != null)
        {
            effect.Initilaize(this.transform.position, effectName, 0.5f, effectsize);
        }
    }
示例#3
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (canCollision == false)
        {
            return;
        }
        if (bounceBulletType == BounceBulletType.BillardsBall)
        {
            SoundManager.Instance.PlaySoundEffect("cueGunBounce");
        }
        else if (bounceBulletType == BounceBulletType.tenisBall)
        {
            SoundManager.Instance.PlaySoundEffect("Tenisd");
        }

        ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();

        if (effect != null)
        {
            effect.Initilaize(this.transform.position, "revolver", 0.5f, 1f);
        }

        bouncCount += 1;
        if (bouncCount >= bounceMax)
        {
            DestroyBullet();
            return;
        }
        canCollision = false;
        StartCoroutine(CollisionCheckRoutine());

        CharacterInfo chr = collision.gameObject.GetComponent <CharacterInfo>();

        if (chr != null)
        {
            chr.GetDamage(damage);
        }



        int          layerMask = MyUtils.GetLayerMaskExcludeName(bulletType.ToString());
        RaycastHit2D rayHit    = Physics2D.Raycast(this.transform.position, moveDir, 1f, layerMask);

        Vector2 reflectVector = Vector2.Reflect(moveDir, rayHit.normal);

        reflectVector.Normalize();

        if (rb != null)
        {
            moveDir = reflectVector.normalized;
        }
    }
    private void OnTriggerEnter2D(Collider2D collision)
    {
        CharacterInfo chr = collision.gameObject.GetComponent <CharacterInfo>();

        if (chr != null)
        {
            chr.GetDamage(damage);
            //이펙트 호출
            ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();
            if (effect != null)
            {
                effect.Initilaize(chr.transform.position, "revolver", 0.5f, 1f);
            }
        }
    }
示例#5
0
        public override void FireBullet(Vector3 firePos, Vector3 fireDirection)
        {
            if (canFire() == false)
            {
                return;
            }

            FireDelayOn();
            PlayFireAnim();
            useBullet();

            //흔들리는 효과
            CameraController.Instance.ShakeCamera(3f, 0.4f);
            int layerMask = MyUtils.GetLayerMaskByString("Enemy");

            SoundManager.Instance.PlaySoundEffect("thunder");

            Collider2D[] colls = Physics2D.OverlapCircleAll(firePos, explosionRadius, layerMask);
            if (colls == null)
            {
                return;
            }

            for (int i = 0; i < colls.Length; i++)
            {
                CharacterInfo characterInfo = colls[i].gameObject.GetComponent <CharacterInfo>();
                if (characterInfo != null)
                {
                    ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();
                    if (effect != null)
                    {
                        effect.Initilaize(characterInfo.transform.position + Vector3.up, "Thunder", 0.5f, 3f);
                    }

                    characterInfo.GetDamage(multiDamage);
                }
            }


            //이펙트 호출
            ExplosionEffect effect2 = ObjectManager.Instance.effectPool.GetItem();

            if (effect2 != null)
            {
                effect2.Initilaize(firePos + Vector3.down * 0.5f, "PowerGauntletEffect", 0.5f, 2f);
            }
        }
示例#6
0
        protected void FireHitScan(Vector3 firePos, Vector3 fireDirection, int damage, Color color = default(Color), bool setPush = false, float pushPower = 3f)
        {
            int          layerMask = (1 << LayerMask.NameToLayer("Enemy") | (1 << LayerMask.NameToLayer("Tile")) | (1 << LayerMask.NameToLayer("ItemTable") | (1 << LayerMask.NameToLayer("EnemyTurret"))));
            Ray2D        ray       = new Ray2D(firePos, fireDirection);
            RaycastHit2D hit       = Physics2D.Raycast(firePos, fireDirection, 100f, layerMask);

            if (hit == true)
            {
                CharacterInfo characterInfo = hit.transform.gameObject.GetComponent <CharacterInfo>();
                if (characterInfo != null)
                {
                    if (setPush == true)
                    {
                        characterInfo.SetPush(firePos, pushPower, 0);
                    }

                    characterInfo.GetDamage(damage);
                    if (characterInfo.IsDead == true)
                    {
                        GoogleService.Instance.SetCharacterAchivement(CharacterType.Sniper);
                    }
                }
                //라인 그려주기
                DrawLiner line = ObjectManager.Instance.linePool.GetItem();
                if (line != null)
                {
                    line.Initialize(firePos, hit.point);
                }

                if (color != default(Color))
                {
                    line.SetLineColor(color);
                }

                //이펙트
                //이펙트 호출
                ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();
                if (effect != null)
                {
                    effect.Initilaize(hit.point, "revolver", 0.5f, 1f);
                }
            }
        }
示例#7
0
    private new void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("ItemTable") == true)
        {
            return;
        }


        int layerMask = MyUtils.GetLayerMaskByString("Enemy");

        Collider2D[] colls = Physics2D.OverlapCircleAll(this.transform.position, 1.5f, layerMask);
        if (colls == null)
        {
            return;
        }

        for (int i = 0; i < colls.Length; i++)
        {
            CharacterInfo characterInfo = colls[i].gameObject.GetComponent <CharacterInfo>();
            if (characterInfo != null)
            {
                characterInfo.GetDamage(damage);
            }
        }

        //이펙트 호출
        ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();

        if (effect != null)
        {
            effect.Initilaize(this.transform.position, "bazooka", 0.5f, 3f);
        }

        SoundManager.Instance.PlaySoundEffect("explosion");

        //흔들리는 효과
        CameraController.Instance.ShakeCamera(3f, 0.4f);

        //삭제
        DestroyBullet();
    }
示例#8
0
    private new void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("ItemTable") == true)
        {
            return;
        }

        CharacterInfo chr = collision.gameObject.GetComponent <CharacterInfo>();

        if (chr != null)
        {
            chr.GetDamage(damage);
            DestroyBullet();

            ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();
            if (effect != null)
            {
                effect.Initilaize(this.transform.position, "revolver", 0.5f, 1f);
            }
        }
    }
示例#9
0
    public IEnumerator SkillRoutine()
    {
        while (true)
        {
            if (Input.GetKeyDown(KeyCode.Mouse0))
            {
                if (CanFire() == true)
                {
#if UNITY_EDITOR
                    Vector2      touchPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                    RaycastHit2D rayHit   = Physics2D.Raycast(touchPos, Vector2.zero, 0.1f, snipingLayerMask);
                    if (rayHit.collider != null)
                    {
                        CharacterInfo monster = rayHit.collider.gameObject.GetComponent <CharacterInfo>();
                        if (monster != null)
                        {
                            if (monster.IsDead == false)
                            {
                                UseBullet();
                                monster.GetDamage(snipingPower);
                            }
                        }

                        //이펙트 호출
                        ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();
                        if (effect != null)
                        {
                            effect.Initilaize(rayHit.transform.position, "SniperAim", 0.5f, 2f);
                            effect.SetAlpha(150f);
                        }

                        SoundManager.Instance.PlaySoundEffect("sniper1");
                    }
                    //
                    //
#else
                    Touch[] touches = Input.touches;
                    if (touches != null)
                    {
                        for (int i = 0; i < touches.Length; i++)
                        {
                            Vector2      touchPos = Camera.main.ScreenToWorldPoint(touches[i].position);
                            RaycastHit2D rayHit   = Physics2D.Raycast(touchPos, Vector2.zero, 0.1f, snipingLayerMask);
                            if (rayHit.collider != null)
                            {
                                CharacterInfo monster = rayHit.collider.gameObject.GetComponent <CharacterInfo>();
                                if (monster != null)
                                {
                                    if (monster.IsDead == false)
                                    {
                                        UseBullet();
                                        monster.GetDamage(snipingPower);

                                        //사운드
                                        SoundManager.Instance.PlaySoundEffect("sniper1");
                                        //이펙트 호출
                                        ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();
                                        if (effect != null)
                                        {
                                            effect.Initilaize(rayHit.transform.position, "SniperAim", 0.5f, 2f);
                                            effect.SetAlpha(150f);
                                        }
                                        break;
                                    }
                                }
                            }
                        }
                    }
#endif
                }
            }

            yield return(null);
        }
    }