private IEnumerator CreateBullet() { creating = true; // bullet 에서 bullet을 만드는중 for (int i = 0; i < 3; i++) { GameObject bullet = Instantiate(gameObject); Transform bulletTransform = bullet.GetComponent <Transform>(); LineSpreadBullet setBullet = bullet.GetComponent <LineSpreadBullet>(); bulletTransform.localPosition = transformCache.localPosition; bulletTransform.localRotation = Quaternion.identity; bulletTransform.localScale = Vector3.one * 0.5f; setBullet.SetUp(Direction, 3.0f, Random.Range(0, 360.0f), true); yield return(new WaitForSeconds(1.0f)); // 1초마다 한번씩 호출 x3 } Angle = Random.Range(0, 360); Direction = Fake.GlobalClass.RotateDirection(Direction, Angle); LineSpreadManager.Instance.OnCollision = false; // 충돌판정을 끝내서 object에서 만들어진 bullet을 움직이게 함. yield return(new WaitForSeconds(2.0f)); creating = false; // bullet 에서 bullet 만들기를 끝냄 LineSpreadManager.Instance.WaitTime = false; // bullet 에서 bullet 만들기를 끝냄을 fireobject 에게 보냄. }
IEnumerator FireBullet() { firing = true; // object에서 bullet을 발사하는중. LineSpreadManager.Instance.WaitTime = true; // bullet에서 bullet을 발사하는 일이 끝날 때까지 대기. yield return(new WaitForSeconds(0.1f)); int anglePlus = 0; playerTransform = Fake.GameManager.Instance.PlayerTransform; Vector2 targetVector = (playerTransform.localPosition - transformCache.localPosition).normalized; while (LineSpreadManager.Instance.OnCollision == false) // bullet이 충돌할 때까지 무한반복 { yield return(new WaitForSeconds(0.1f)); // 발사간격 for (int i = 0; i < 6; i++) { GameObject bulletObject; if (firstFire == false) { bulletObject = Instantiate(BulletA); firstFire = true; // 첫번째만 발사 } else { bulletObject = Instantiate(BulletB); } Transform bulletTransform = bulletObject.GetComponent <Transform>(); LineSpreadBullet bullet = bulletObject.GetComponent <LineSpreadBullet>(); bulletTransform.parent = transformCache; bulletTransform.localPosition = Vector3.zero; bulletTransform.localRotation = Quaternion.identity; bulletTransform.localScale = Vector3.one * 0.5f; bullet.SetUp(targetVector, 3.0f, anglePlus, false); anglePlus = (i + 1) * 60; // 60도씩 돌림. } anglePlus = 0; } firing = false; // object에서 bullet을 발사하기를 끝냄. firstFire = false; // 첫번째만 발사 초기화 }