예제 #1
0
    public float GroundLenght = 4F;                 //длина объекта земля

    void Start()
    {
        GameObject player = GameObject.Find("Player3(Clone)");

        //Debug.Log(player.GetInstanceID());
        forgen = player.transform.Find("Generator").GetComponent <ForGen>();
        // Debug.Log(forgen.GetInstanceID());
    }
예제 #2
0
    Collider2D[] colliders;//для опредения объектов в месте генерации монстра

    void Start()
    {
        GameObject player = GameObject.FindWithTag("Player");

        forgen  = player.transform.Find("Generator").GetComponent <ForGen>();
        RndStep = 0;
        GenPos  = Static.ForgenPosition + Static.StepGenMonster;
        LastPos = GenPos;
    }
예제 #3
0
    public float GroundLenght = 4F;               //длина объекта земля

    void Start()
    {
        GameObject player = GameObject.Find("Player2(Clone)");

        forgen = player.transform.Find("Generator").GetComponent <ForGen>();
    }
예제 #4
0
    void Update()
    {
        if (forgen == null)
        {
            if (GameObject.Find("Player"))
            {
                forgen = GameObject.Find("Player").GetComponent <Character>().transform.Find("Generator").GetComponent <ForGen>();
            }
            else if (GameObject.Find("Player2(Clone)"))
            {
                forgen = GameObject.Find("Player2(Clone)").GetComponent <Character>().transform.Find("Generator").GetComponent <ForGen>();
            }
            else if (GameObject.Find("Player3(Clone)"))
            {
                forgen = GameObject.Find("Player3(Clone)").GetComponent <Character>().transform.Find("Generator").GetComponent <ForGen>();
            }
            else
            {
                Debug.Log("error!");
            }
        }

        switch (lvl)
        {
        case 1:
        {
            if (forgen.transform.position.x - zaderzka > LastPos + 0.5)
            {
                if (RndCol < 1)
                {
                    RndY = rnd.Next(7);  //7 вида высоты
                    switch (RndY)        //выбор высоты генерации
                    {
                    case 0: YPos = 0F; break;

                    case 1: YPos = 2F; break;

                    case 2: YPos = 4F; break;

                    case 3: YPos = 6F; break;

                    case 4: YPos = -1F; break;                             //будет пусто

                    case 5: YPos = -1F; break;                             //будет пусто

                    case 6: YPos = -1F; break;                             //будет пусто
                    }
                    YPos   = YPos + (float)(rnd.NextDouble()) / 2 + 0.25F; //от 0,25 до 0,75
                    RndCol = rnd.Next(4) + 2;                              //максимально на 1 высоте
                }
                RndCol--;

                XPos = forgen.transform.position.x - zaderzka;
                //круг вокруг нижней линии персонажа. если в него попадают колайдеры то массив заполняется ими
                Collider2D[] colliders   = Physics2D.OverlapCircleAll(new Vector2(XPos, YPos - 0.5F), 0.2F);
                Collider2D[] nocolliders = Physics2D.OverlapCircleAll(new Vector2(XPos, YPos), 0.2F);        //чтобы на месте создания не было коллайдеров

                if ((colliders.Length > 0) && (nocolliders.Length == 0) && (YPos > minY) && (YPos < maxY))   //проверка на близость других коллайдеров и существование высоты
                {
                    FireSphere firesphere = PoolManager.GetObject(FireSpherePrefab.name, new Vector2(XPos, YPos), FireSpherePrefab.transform.rotation).GetComponent <FireSphere>();
                }
                LastPos = forgen.transform.position.x - zaderzka;
            }
            break;
        }

        case 2:
        {
            if (forgen.transform.position.x - zaderzka > LastPos + 0.5)
            {
                if (RndCol < 1)
                {
                    RndY = rnd.Next(7);  //7 вида высоты
                    switch (RndY)        //выбор высоты генерации
                    {
                    case 0: YPos = 12F; break;

                    case 1: YPos = 14F; break;

                    case 2: YPos = 16F; break;

                    case 3: YPos = 18F; break;

                    case 4: YPos = -1F; break;                             //будет пусто
                    }
                    YPos   = YPos + (float)(rnd.NextDouble()) / 2 + 0.25F; //от 0,25 до 0,75
                    RndCol = rnd.Next(4) + 2;                              //максимально на 1 высоте
                }
                RndCol--;
                XPos = forgen.transform.position.x - zaderzka;

                Collider2D[] nocolliders = Physics2D.OverlapCircleAll(new Vector2(XPos, YPos), 0.4F);

                if ((nocolliders.Length == 0) && (YPos > minY) && (YPos < maxY))        //проверка на близость других коллайдеров и существование высоты
                {
                    FireSphere firesphere = PoolManager.GetObject(FireSpherePrefab.name, new Vector2(XPos, YPos), FireSpherePrefab.transform.rotation).GetComponent <FireSphere>();
                }
                LastPos = forgen.transform.position.x - zaderzka;
            }
            break;
        }

        case 3:
        {
            if (forgen.transform.position.x - zaderzka > LastPos + 0.5)
            {
                if (RndCol < 1)
                {
                    RndY = rnd.Next(7);  //7 вида высоты
                    switch (RndY)        //выбор высоты генерации
                    {
                    case 0: YPos = 22F; break;

                    case 1: YPos = 24F; break;

                    case 2: YPos = 26F; break;

                    case 3: YPos = 28F; break;

                    case 4: YPos = -1F; break;                             //будет пусто

                    case 5: YPos = -1F; break;                             //будет пусто

                    case 6: YPos = -1F; break;                             //будет пусто

                    case 7: YPos = -1F; break;                             //будет пусто

                    case 8: YPos = -1F; break;                             //будет пусто

                    case 9: YPos = -1F; break;                             //будет пусто
                    }
                    YPos   = YPos + (float)(rnd.NextDouble()) / 2 + 0.25F; //от 0,25 до 0,75
                    RndCol = rnd.Next(4) + 1;                              //максимально на 1 высоте
                }
                RndCol--;
                XPos = forgen.transform.position.x - zaderzka;


                if ((YPos > minY) && (YPos < maxY))        //проверка на близость других коллайдеров и существование высоты
                {
                    FireSphere firesphere = PoolManager.GetObject(FireSpherePrefab.name, new Vector2(XPos, YPos), FireSpherePrefab.transform.rotation).GetComponent <FireSphere>();
                }
                LastPos = forgen.transform.position.x - zaderzka;
            }
            break;
        }
        }
    }