回答編集履歴
3
コードを更新したのと説明の内容を変えました。
test
CHANGED
@@ -1,22 +1,26 @@
|
|
1
|
-
```C
|
1
|
+
```C#
|
2
2
|
private void OnCollisionEnter2D(Collision2D collision)
|
3
3
|
{
|
4
|
-
Transform[] children = collision.transform.GetComponentsInChildren<Transform>();
|
5
|
-
|
6
|
-
if (collision.gameObject.
|
4
|
+
if (collision.gameObject.tag == "Block_B" ||
|
7
|
-
collision.gameObject.
|
5
|
+
collision.gameObject.tag == "Block_G" ||
|
8
|
-
collision.gameObject.
|
6
|
+
collision.gameObject.tag == "Block_Y" ||
|
9
|
-
collision.gameObject.
|
7
|
+
collision.gameObject.tag == "Block_R")
|
10
|
-
for(int i=0; i<children.Length; i++)
|
11
|
-
|
8
|
+
{
|
9
|
+
for (int x = 0; x < width; x += 2)
|
10
|
+
{
|
11
|
+
for (int y = 0; y < height; y += 2)
|
12
|
+
{
|
13
|
+
// Listをクリア
|
14
|
+
checkZumiFieldBlocks.Clear();
|
12
|
-
|
15
|
+
// 同じ種類が1以上だったら配列を削除
|
13
|
-
|
16
|
+
if (Renketusuu(x, y, 0) > 1 && fieldBlocks[x, y] != null)
|
17
|
+
{
|
18
|
+
Debug.Log(fieldBlocks[x, y] + "_" + "連結数_R");
|
14
|
-
|
19
|
+
Destroy(fieldBlocks[x, y],6f);
|
15
|
-
}
|
20
|
+
}
|
16
|
-
|
21
|
+
}
|
22
|
+
}
|
23
|
+
}
|
17
24
|
}
|
18
25
|
```
|
19
|
-
|
26
|
+
当たり判定を書き換えました。これだと、当たったら連結しているブロックをすべて消すことができます。プレイヤーが当たったブロックを起点とするのは自分で試行錯誤してやってみます。ありがとうございました。
|
20
|
-
孫にブロックの塊を入れる
|
21
|
-
地道に塊を量産して、手動で配置する。その際タイルマップを使用する。
|
22
|
-
このようにコードを書き直しました。間違っていれば教えてください。
|
2
スクリプトの修正
test
CHANGED
@@ -9,11 +9,12 @@
|
|
9
9
|
collision.gameObject.CompareTag("Block_R")){
|
10
10
|
for(int i=0; i<children.Length; i++)
|
11
11
|
{
|
12
|
-
//親、子を削除対象から除外
|
12
|
+
///親、子を削除対象から除外
|
13
|
-
if (i != 0&& i !=1)
|
13
|
+
///if (i != 0&& i !=1)
|
14
14
|
Destroy(children[i].gameObject);
|
15
15
|
}
|
16
16
|
}
|
17
|
+
}
|
17
18
|
```
|
18
19
|
親オブジェクトにタグを設定して孫オブジェクトを探索し、孫オブジェクトをすべて削除
|
19
20
|
孫にブロックの塊を入れる
|
1
説明を追加した。
test
CHANGED
@@ -17,4 +17,5 @@
|
|
17
17
|
```
|
18
18
|
親オブジェクトにタグを設定して孫オブジェクトを探索し、孫オブジェクトをすべて削除
|
19
19
|
孫にブロックの塊を入れる
|
20
|
+
地道に塊を量産して、手動で配置する。その際タイルマップを使用する。
|
20
21
|
このようにコードを書き直しました。間違っていれば教えてください。
|