/// <summary>
        /// Creates a new PhysicsVolume.
        /// </summary>
        /// <param name="id">The ID of the PhysicsVolume.</param>
        /// <param name="area">The area that when something
        /// is in, will be affected by the PhysicsVolume.</param>
        public PhysicsVolume(string id, Rectangle area)
        {
            this.id = id;

            collide             = new CollisionObject(id + "Collide", area);
            collide.OnCollided += new CollisionEvent(Collide);

            ForceManager.AddForce(this);
        }
Example #2
0
    // 周りと合体できるかチェックする(冗長な書き方のため、修正可能)
    private void MergeCheck()
    {
        int addRank = 0;

        // 4方向のチェック
        for (int x = -1; x <= 1; x += 2)
        {
            try
            {
                //print("checked monster info : " + gridInfo.monsterPos[nowPos.x + x, nowPos.y]);
                // 指定したマスに合体できるブロックがあるかどうかの判定(今は全部合体するようになっています)
                //if (gridInfo.monsterPos[nowPos.x + x, nowPos.y] != null)
                BlockData targetBlockData = gridInfo.monsterPos[nowPos.x + x, nowPos.y].GetComponent <Block>().blockData;
                if (targetBlockData.Rank == GetComponent <Block>().blockData.Rank&& targetBlockData.Color.Equals(GetComponent <Block>().blockData.Color) && gridInfo.monsterPos[nowPos.x + x, nowPos.y].GetComponent <BlockAnimation>().IsArrived)
                {
                    gridInfo.monsterPos[nowPos.x + x, nowPos.y].GetComponent <BlockAnimation>().targetPos = nowPos;
                    gridInfo.monsterPos[nowPos.x + x, nowPos.y].GetComponent <BlockAnimation>().Delete();
                    addRank += 1;
                }
            }
            catch
            {
                // 枠をはみ出て探索することを防ぐためのtry-catch
            }
        }
        for (int y = -1; y <= 1; y += 2)
        {
            try
            {
                //print("checked monster info : " + gridInfo.monsterPos[nowPos.x, nowPos.y + y]);
                // 指定したマスに合体できるブロックがあるかどうかの判定(今は全部合体するようになっています)
                //if(gridInfo.monsterPos[nowPos.x, nowPos.y + y] != null)
                BlockData targetBlockData = gridInfo.monsterPos[nowPos.x, nowPos.y + y].GetComponent <Block>().blockData;
                if (targetBlockData.Rank == GetComponent <Block>().blockData.Rank&& targetBlockData.Color.Equals(GetComponent <Block>().blockData.Color) && gridInfo.monsterPos[nowPos.x, nowPos.y + y].GetComponent <BlockAnimation>().IsArrived)
                {
                    gridInfo.monsterPos[nowPos.x, nowPos.y + y].GetComponent <BlockAnimation>().targetPos = nowPos;
                    gridInfo.monsterPos[nowPos.x, nowPos.y + y].GetComponent <BlockAnimation>().Delete();
                    addRank += 1;
                }
            }
            catch
            {
                // 枠をはみ出て探索することを防ぐためのtry-catch
            }
        }
        GetComponent <Block>().blockData.Rank += addRank;
        forceManager.AddForce((float)addRank / 10);
    }