コード例 #1
0
        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 에게 보냄.
        }
コード例 #2
0
        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; // 첫번째만 발사 초기화
        }