示例#1
0
    // Use this for initialization
    void Start()
    {
        if (GetComponent <BoxCollider2D>())
        {
            _size            = GetComponent <BoxCollider2D>().size;
            _horizontalObjNb = (int)(_size.x / _sizeCube);
            _verticalObjNb   = (int)(_size.y / _sizeCube);
            _topLeft         = (Vector2)transform.position - (_size / 2);
            for (float y = 0; y < _verticalObjNb; y++)
            {
                for (float x = 0; x < _horizontalObjNb; ++x)
                {
                    objTmp = (Instantiate(_objectToGenerate, new Vector2(_topLeft.x + _sizeCube / 2 + x * _sizeCube, _topLeft.y + _sizeCube / 2 + y * _sizeCube), transform.rotation) as GameObject);
                    if (objTmp)
                    {
                        objTmp.transform.SetParent(transform);
                    }
                    objTmp.transform.localScale = new Vector2(_size.x / (_horizontalObjNb * 2), _size.y / (_verticalObjNb * 2));
                    if (objTmp.GetComponent <ObjectState>())
                    {
                        ObjStateScript                  = objTmp.GetComponent <ObjectState>();
                        ObjStateScript._state           = _state;
                        ObjStateScript._timeToPropagate = _timeToPropagate;
                        ObjStateScript._timeStayElec    = _timeStayElec;
                        ObjStateScript._timeToDestroy   = _timeToDestroy;
                        ObjStateScript._onPropagation   = _onPropagation;
                        ObjStateScript._onDestruction   = _onDestruction;
                        ObjStateScript._onConduction    = _onConduction;
                        ObjStateScript._canBeWet        = _canBeWet;
                        ObjStateScript.SetWindTranslate(_windTranslate);
                    }
                    if (objTmp.GetComponent <Rigidbody2D>() && GetComponent <Rigidbody2D>())
                    {
                        objTmp.GetComponent <Rigidbody2D>().gravityScale = GetComponent <Rigidbody2D>().gravityScale;
                        objTmp.GetComponent <Rigidbody2D>().mass         = GetComponent <Rigidbody2D>().mass;
                        objTmp.GetComponent <Rigidbody2D>().constraints  = GetComponent <Rigidbody2D>().constraints;
                        GetComponent <Rigidbody2D>().Sleep();
                        //if (!_withRigidBody)
                        //    objTmp.GetComponent<Rigidbody2D>().Sleep();
                    }
                    if (GetComponent <BoxCollider2D>().isTrigger)
                    {
                        objTmp.GetComponent <BoxCollider2D>().isTrigger = true;
                    }
                    objTmp.layer = gameObject.layer;
                }
            }
            GetComponent <BoxCollider2D>().enabled = false;
        }

        //DestroyObject(gameObject);
    }