Пример #1
0
 /// <summary>
 /// Adds BrokenFloor to _Platforms list, sets name, scale and bedrock
 /// </summary>
 /// <param name="floor">BrokenFloor</param>
 /// <param name="index">Index of _Platforms[] & Index of name</param>
 /// <param name="localScale">localScale of the floor</param>
 private void AddToList(BrokenFloor floor, int index, Vector3 localScale)
 {
     floor.transform.localScale = localScale;
     floor.Bedrock     = _Bedrock;
     floor.name        = "BrokenFloor" + index;
     _Platforms[index] = floor;
 }
Пример #2
0
        private void Fill()
        {
            if (_Clear)
            {
                int childs = transform.childCount;
                for (int i = childs - 1; i > -1; i--)
                {
                    DestroyImmediate(transform.GetChild(i).gameObject);
                }
                _Platforms = new BrokenFloor[0];
            }
            else
            {
                _Platforms = new BrokenFloor[transform.childCount];
                for (int i = 0; i < _Platforms.Length; i++)
                {
                    BrokenFloor floor = transform.GetChild(i).GetComponent <BrokenFloor>();
                    if (floor == null)
                    {
                        Debug.LogError("Child object number " + i + " has no BrokenFloor component");
                    }
                    AddToList(floor, i, floor.transform.localScale);
                }
            }

            if (!_Create)
            {
                return;
            }

            FillArea();
        }
Пример #3
0
        private void FillArea()
        {
            FillArray2D.ArrayObject[] objects = new FillArray2D().RandomRectangles2(_Density, _MinPlatformSize, _MaxPlatformSize);
            _Platforms = new BrokenFloor[objects.Length];
            int     index   = 0;
            float   factorX = _Size.x / _Density.x;
            float   factorY = _Size.y / _Density.y;
            Vector3 PlatformPosition;
            Vector3 PlatformSize;

            foreach (FillArray2D.ArrayObject ao in objects)
            {
                float width  = (ao.endX - ao.startX + 1) * factorX;
                float height = (ao.endY - ao.startY + 1) * factorY;
                PlatformSize = new Vector3(width, Random.Range(HeightBetween.x, HeightBetween.y), height);
                float posX = transform.position.x - _Size.x / 2 + (ao.startX * factorX) + width / 2;
                float posZ = transform.position.z - _Size.y / 2 + (ao.startY * factorY) + height / 2;
                PlatformPosition = new Vector3(posX, transform.position.y + Random.Range(YPosBetween.x, YPosBetween.y), posZ);
                BrokenFloor floor = Instantiate(_PlatformPrefab, PlatformPosition, _PlatformPrefab.transform.rotation, transform).GetComponent <BrokenFloor>();
                AddToList(floor, index, PlatformSize);
                index++;
            }
        }