/// <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); }
// 周りと合体できるかチェックする(冗長な書き方のため、修正可能) 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); }