Exemplo n.º 1
0
    public IEnumerator Fragmentation()
    {
        while (true)
        {
            if (movingBullet.bulletMoveSpeed <= 0.0f)
            {
                Vector2 bulletFirePosition = transform.position;

                // 탄막 2 이펙트
                StartCoroutine(enemyFire.CreateBulletFireEffect(303, 1.0f, 12.0f, 0.3f, 0.1f, 0.4f, bulletFirePosition));

                // 탄막 2 발사 (초록색 / 노란색 소형 테두리 원탄) (랜덤탄)
                StartCoroutine(FragmentationAttack1(bulletFirePosition));
                // 탄막 3 발사 (초록색 / 노란색 소형 별탄) (랜덤탄)
                StartCoroutine(FragmentationAttack2(bulletFirePosition));
                // 탄막 4 발사 (초록색 / 노란색 대형 별탄) (랜덤탄)
                StartCoroutine(FragmentationAttack3(bulletFirePosition));

                yield return(new WaitForSeconds(0.1f));

                bulletManager.bulletPool.Enqueue(gameObject);
                transform.SetParent(enemyBullet);
                eraseBullet.ClearBullet();
                gameObject.SetActive(false);
            }

            yield return(new WaitForEndOfFrame());
        }
    }
Exemplo n.º 2
0
    public IEnumerator Fragmentation()
    {
        while (true)
        {
            // 탄막 2 발사 (파란색 원탄) (랜덤탄)
            if (movingBullet.bulletMoveSpeed <= 0.0f)
            {
                Vector2 bulletFirePosition = transform.position;

                // 탄막 2 이펙트
                StartCoroutine(enemyFire.CreateBulletFireEffect(301, 1.0f, 12.0f, 0.4f, 0.1f, 0.35f, bulletFirePosition));

                if (bulletManager.bulletPool.Count > 0)
                {
                    for (int i = 0; i < 16; i++)
                    {
                        GameObject bullet = bulletManager.bulletPool.Dequeue();
                        bullet.SetActive(true);
                        EnemyFire.ClearChild(bullet);
                        bullet.transform.position = transform.position;
                        bullet.gameObject.tag     = "BULLET_ENEMY";
                        bullet.gameObject.layer   = LayerMask.NameToLayer("BULLET_ENEMY_DESTROYZONE_INNER1");
                        bullet.transform.SetParent(enemyBullet);
                        if (!bullet.GetComponent <SpriteRenderer>())
                        {
                            bullet.AddComponent <SpriteRenderer>();
                        }
                        if (!bullet.GetComponent <CircleCollider2D>())
                        {
                            bullet.AddComponent <CircleCollider2D>();
                        }
                        if (!bullet.GetComponent <InitializeBullet>())
                        {
                            bullet.AddComponent <InitializeBullet>();
                        }
                        if (!bullet.GetComponent <MovingBullet>())
                        {
                            bullet.AddComponent <MovingBullet>();
                        }
                        if (!bullet.GetComponent <EraseBullet>())
                        {
                            bullet.AddComponent <EraseBullet>();
                        }
                        SpriteRenderer   spriteRenderer   = bullet.GetComponent <SpriteRenderer>();
                        CircleCollider2D circleCollider2D = bullet.GetComponent <CircleCollider2D>();
                        InitializeBullet initializeBullet = bullet.GetComponent <InitializeBullet>();
                        MovingBullet     movingBullet     = bullet.GetComponent <MovingBullet>();
                        spriteRenderer.sprite          = enemyFire.spriteCollection[23];
                        spriteRenderer.sortingOrder    = 3;
                        circleCollider2D.isTrigger     = true;
                        circleCollider2D.radius        = 0.04f;
                        circleCollider2D.enabled       = false;
                        initializeBullet.bulletType    = BulletType.BULLETTYPE_NORMAL;
                        initializeBullet.bulletObject  = bullet.gameObject;
                        initializeBullet.targetObject  = playerObject;
                        initializeBullet.isGrazed      = false;
                        movingBullet.bulletMoveSpeed   = Random.Range(4.0f, 6.0f);
                        movingBullet.bulletSpeedState  = BulletSpeedState.BULLETSPEEDSTATE_NORMAL;
                        movingBullet.bulletRotateState = BulletRotateState.BULLETROTATESTATE_NONE;
                        movingBullet.bulletDestination = initializeBullet.GetRandomAimedBulletDestination();
                        float angle = Mathf.Atan2(movingBullet.bulletDestination.y, movingBullet.bulletDestination.x) * Mathf.Rad2Deg;
                        movingBullet.ChangeRotateAngle(angle - 90.0f);
                    }

                    bulletManager.bulletPool.Enqueue(gameObject);
                    transform.SetParent(enemyBullet);
                    eraseBullet.ClearBullet();
                    gameObject.SetActive(false);
                    break;
                }
                else
                {
                    enemyFire.AddBulletPool();
                    break;
                }
            }

            yield return(new WaitForEndOfFrame());
        }
    }
Exemplo n.º 3
0
 void Update()
 {
     // 레이저 활성화, 비활성화
     if (initializeBullet.bulletType.Equals(BulletType.BULLETTYPE_LASER_HOLD))
     {
         if (isLaserDisabled.Equals(true))
         {
             laserEnableDelay += Time.deltaTime;
             if (laserEnableDelay >= laserEnableTime)
             {
                 laserEnableDelay     = laserEnableTime;
                 transform.localScale = new Vector3(transform.localScale.x + laserEnableSpeed, transform.localScale.y, transform.localScale.z);
                 if (transform.localScale.x >= laserWidth)
                 {
                     if (isLaserRotateEnabled.Equals(true))
                     {
                         movingBullet.bulletRotateState = laserRotateState;
                         movingBullet.bulletRotateSpeed = laserRotateSpeed;
                         movingBullet.bulletRotateLimit = laserRotateLimit;
                         isLaserRotateEnabled           = false;
                     }
                     transform.localScale      = new Vector3(laserWidth, transform.localScale.y, transform.localScale.z);
                     isLaserDisabled           = false;
                     isLaserEnabled            = true;
                     capsuleCollider2D.enabled = true;
                 }
             }
         }
         else if (isLaserEnabled.Equals(true))
         {
             laserDisableDelay += Time.deltaTime;
             if (laserDisableDelay >= laserDisableTime)
             {
                 laserDisableDelay    = laserDisableTime;
                 transform.localScale = new Vector3(transform.localScale.x - laserDisableSpeed, transform.localScale.y, transform.localScale.z);
                 if (transform.localScale.x <= 0.0f)
                 {
                     if (isLaserRotateDisabled.Equals(true))
                     {
                         movingBullet.bulletRotateState = BulletRotateState.BULLETROTATESTATE_NONE;
                         movingBullet.bulletRotateSpeed = 0.0f;
                         movingBullet.bulletRotateLimit = 0.0f;
                         isLaserRotateDisabled          = false;
                     }
                     transform.localScale      = new Vector3(0.0f, transform.localScale.y, transform.localScale.z);
                     isLaserEnabled            = false;
                     capsuleCollider2D.enabled = false;
                     eraseBullet.ClearBullet();
                 }
             }
         }
     }
     // 무빙 레이저의 스케일 조정
     // else
     // {
     //     float scaleValue = (GetComponent<MovingBullet>().bulletMoveSpeed * Time.deltaTime) * 0.8f;
     //     transform.localScale = new Vector3(transform.localScale.x + scaleValue, transform.localScale.y, transform.localScale.z);
     //     if (transform.localScale.x >= laserLength)
     //     {
     //         transform.localScale = new Vector3(laserLength, transform.localScale.y, transform.localScale.z);
     //     }
     // }
 }