Esempio n. 1
0
    public void SetupObstacItems(float radius = 0.25f)
    {
        oriRadius = radius;

        //level related to diff
        ObstacLevel = LogicManager.Instance.difficulty;

        if (setUpTimer < setUpInver && obstacItems.Count > 0)
        {
            return;
        }
        setUpTimer = 0;

        while (obstacItems.Count > 0)
        {
            ObstacItem tempOItem = obstacItems[0];
            obstacItems.Remove(tempOItem);
            GameObject.Destroy(tempOItem.gameObject);
        }

        for (int i = 1; i <= ObstacLevel; ++i)
        {
            GameObject prefab   = ObstacPrefab[UnityEngine.Random.Range(0, ObstacPrefab.Count)];
            int        obstaNum = UnityEngine.Random.Range(ObstacNumMin, ObstacNumMax + 1);
            float      r        = radius / ObstacLevel * i * UnityEngine.Random.Range(0.9f, 1.1f);
            float      size     = scaleCurve.Evaluate(1.0f * i / ObstacLevel);
            SetUpOneLevel(prefab, obstaNum, r, size);
        }
    }
Esempio n. 2
0
    public void SetUpOneLevel(GameObject prefab, int obsNumber, float radius, float size)
    {
        float initAngle = UnityEngine.Random.Range(0, 2f * Mathf.PI);

        for (int i = 0; i < obsNumber; ++i)
        {
            GameObject obj   = Instantiate(prefab) as GameObject;
            float      angle = 2f * Mathf.PI * i / obsNumber + initAngle;
            float      x     = Mathf.Sin(angle) * radius;
            float      y     = -Mathf.Cos(angle) * radius;
            obj.transform.parent        = this.transform;
            obj.transform.localPosition = new  Vector3(x, y, 0);
            obj.transform.Rotate(new Vector3(0, 0, angle * 180f / Mathf.PI));
            obj.transform.localScale = Vector3.one * size;
            ObstacItem obsItem = obj.GetComponent <ObstacItem>();
            obsItem.Init();
            obsItem.SetAlpha(0);
            obstacItems.Add(obsItem);
        }
    }