コード例 #1
0
        void CreateDotOnCircle()
        {
            Time.timeScale = 1;


            GameObject prefab = this.DotPrefab;
            Quaternion rot    = prefab.transform.rotation;

            Vector3   posTOP    = new Vector3(0, positionTouchBorderTOP, 0);
            Transform parentTOP = CircleBorderTOP;


            float numberTOP = numberDotsOnCircle * ratioNombreDotsOnCircleTop;


            for (int i = 0; i < (int)numberTOP; i++)
            {
                CircleTOP.rotation = Quaternion.Euler(new Vector3(0, 0, i * 360f / (int)numberTOP));

                DotManager dm = InstantiateDot(posTOP, rot, parentTOP);

                dm.ActivateLine(dm.transform.position, dm.transform.parent);
            }

            Vector3 posBOTTOM = new Vector3(0, positionTouchBorderBOTTOM, 0);

            float numberBOTTOM = numberDotsOnCircle * ratioNombreDotsOnCircleBottom;

            for (int i = 0; i < (int)numberBOTTOM; i++)
            {
                CircleBOTTOM.rotation = Quaternion.Euler(new Vector3(0, 0, i * 360f / (int)numberBOTTOM));

                DotManager dm = InstantiateDot(posBOTTOM, rot, CircleBorderBOTTOM);

                dm.ActivateLine(dm.transform.position, dm.transform.parent);
            }
        }
コード例 #2
0
        IEnumerator ShootDot(DotManager dBottom, DotManager dTop)
        {
            canShoot = false;

            lastShootTop    = null;
            lastShootBottom = null;

            StopCoroutine("PositioningDots");
            StopCoroutine("MoveStartPositionDot");

            if (dBottom != null)
            {
                dBottom.GetComponent <Collider2D>().enabled   = true;
                dBottom.GetComponent <Collider2D>().isTrigger = true;
            }
            if (dTop != null)
            {
                dTop.GetComponent <Collider2D>().enabled   = true;
                dTop.GetComponent <Collider2D>().isTrigger = true;
            }

            for (int i = 0; i < DotsTop.Count; i++)
            {
                DotsTop [i].transform.localScale = Vector3.one;


                DotsTop [i].transform.position = getDotPositionTop(i);
            }

            for (int i = 0; i < DotsBottom.Count; i++)
            {
                DotsBottom [i].transform.localScale = Vector3.one;

                DotsBottom [i].transform.position = getDotPositionBottom(i);
            }

            yield return(null);


            if (DotsBottom.Count != 0 || DotsTop.Count != 0)
            {
                PlaySoundShoot();

                if (dBottom != null)
                {
                    DotsBottom.Remove(dBottom);
                    lastShootBottom = dBottom;
                }

                if (dTop != null)
                {
                    DotsTop.Remove(dTop);
                    lastShootTop = dTop;
                }

                StartCoroutine(PositioningDots());



                Vector3 targetBttom = new Vector3(0, positionTouchBorderBOTTOM, 0);
                Vector3 targetTop   = new Vector3(0, positionTouchBorderTOP, 0);



                if (dBottom != null)
                {
                    dBottom.transform.position = getDotPositionBottom(0);
                    //new Vector3 (0, -sizeDot*0.7f, 0);
                }

                if (dTop != null)
                {
                    dTop.transform.position = getDotPositionTop(0);
                    //new Vector3 (0, sizeDot*0.7f, 0);
                }

                while (true)
                {
                    float step = speed * Time.deltaTime;
                    if (dBottom != null)
                    {
                        dBottom.transform.position = Vector3.MoveTowards(dBottom.transform.position, targetBttom, step);
                    }

                    if (dTop != null)
                    {
                        dTop.transform.position = Vector3.MoveTowards(dTop.transform.position, targetTop, step);
                    }

                    if (dBottom != null)
                    {
                        if (dBottom.transform.position == targetBttom || isGameOver)
                        {
                            canShoot = true;


                            break;
                        }
                    }
                    else
                    {
                        if (dTop.transform.position == targetTop || isGameOver)
                        {
                            canShoot = true;


                            break;
                        }
                    }


                    yield return(new WaitForEndOfFrame());
                }

                if (dBottom != null)
                {
                    dBottom.ActivateLine(targetBttom, CircleBorderBOTTOM);
                }

                if (dTop != null)
                {
                    dTop.ActivateLine(targetTop, CircleBorderTOP);
                }

                yield return(new WaitForSeconds(0.001f));

                if (DotsBottom.Count == 0 && DotsTop.Count == 0 && !isGameOver)
                {
                    success = true;
                }

                if (success && !isGameOver)
                {
                    LevelCleared();
                }

                for (int i = 0; i < DotsTop.Count; i++)
                {
                    DotsTop [i].transform.localScale = Vector3.one;

                    DotsTop [i].transform.position = getDotPositionTop(i);
                }

                for (int i = 0; i < DotsBottom.Count; i++)
                {
                    DotsBottom [i].transform.localScale = Vector3.one;

                    DotsBottom [i].transform.position = getDotPositionBottom(i);
                }
            }
        }