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()); } }
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()); } }
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); // } // } }