Beispiel #1
0
 public void TriggerOnObstacle(ObstacleBall obstacle)
 {
     foreach (Powerup powerup in powerups)
     {
         powerup.PreCollidedWithObstacle(obstacle);
     }
 }
Beispiel #2
0
    public void SpawnEnemies()
    {
        int lv       = level + (GlobalVars.getPlayerProfile().stage - 1) * 10;
        int quantity = Mathf.Max(Random.Range(lv / 3 - 1, lv / 3 + 2), 1);

        int total = Transform.FindObjectsOfType(typeof(ObstacleBall)).Length;

        for (int i = 0; i < quantity; i++)
        {
            if (total > 100)
            {
                break;
            }


            int hits = Mathf.Max(Random.Range(lv / 3 - 1, lv / 3 + 2), 1);

            Vector3[] corners = new Vector3[4];
            playArea.GetWorldCorners(corners);
            Vector3 sMin = corners[0];
            Vector3 sMax = corners[2];

            Vector3 obsPos = new Vector3(
                Random.Range(sMin.x, sMax.x),
                Random.Range(sMin.y, sMax.y),
                0
                );

            while ((obsPos - pimbaBall.transform.position).magnitude < 1.5)
            {
                obsPos = new Vector3(
                    Random.Range(sMin.x, sMax.x),
                    Random.Range(sMin.y, sMax.y),
                    0
                    );
            }

            ObstacleBall instanced = Instantiate(obstaclePrefab, obsPos, new Quaternion());

            instanced.manager              = this;
            instanced.coinEffect           = pimbaBall.coinEffect.gameObject;
            instanced.transform.localScale = new Vector3(0, 0, 0);
            instanced.hits         = hits;
            instanced.color        = Random.ColorHSV();
            instanced.color.a      = 1;
            instanced.obstacleSize = Random.Range(0.4f, 0.7f);
            instanced.pimbaBall    = pimbaBall;

            total++;
        }

        level++;

        if (level >= 10)
        {
            level = 0;
            GlobalVars.getPlayerProfile().stage++;
        }
    }
Beispiel #3
0
 // Update is called once per frame
 void Update()
 {
     if (curBallCount < maxBallCount)
     {
         ObstacleBall obj = objPool.obstacleBallObjPool.GetObject();
         obj.transform.position = new Vector2(Random.Range(-3f, 3f), 5.5f);
         obj.transform.rotation = Quaternion.identity;
         curBallCount          += 1;
     }
 }
Beispiel #4
0
    public void ChainReaction(ObstacleBall obs, Vector2 chain)
    {
        //Reação em cadeia

        for (int i = 0; i < 3; i++)
        {
            if (Random.Range(0, 1f) < chain.x)
            {
                //Calcula o target random
                ObstacleBall[] list = Resources.FindObjectsOfTypeAll(typeof(ObstacleBall)) as ObstacleBall[];
                list = list.Select(b => b).Where(b => b.gameObject.activeInHierarchy).ToArray();

                if (list.Length == 1)
                {
                    return;
                }

                ObstacleBall rand_ob = list[Random.Range(0, list.Length)];
                float        dist    = (rand_ob.transform.position - obs.transform.position).magnitude;
                int          tries   = 0;
                while (rand_ob == obs || !rand_ob.gameObject.activeInHierarchy || dist > 3)    // impede de acertar eu mesmo
                {
                    rand_ob = list[Random.Range(0, list.Length)];
                    dist    = (rand_ob.transform.position - obs.transform.position).magnitude;
                    tries++;
                    if (tries > 10)
                    {
                        return;
                    }
                }

                //Cria o objeto de linha
                GameObject line = Instantiate(lightningPrefab);

                line.GetComponent <LightningFadeOut>().RecalculateLines(
                    obs.transform.position,
                    rand_ob.transform.position
                    );

                //Dá dano e propaga o efeito
                rand_ob.Damage((int)chain.y);
                ChainReaction(rand_ob, chain * new Vector2(.5f, 1));
            }
        }
    }
Beispiel #5
0
 public abstract void PreCollidedWithObstacle(ObstacleBall obstacle);