Unity 2D でテトリスを制作したときのメモです。
リンク先の参考文献を元に、ブロックについて考えた内容です。
ブロックとセル
テトリスのブロックは、4つのセル(四角形)から構成されています。
セルの位置は (x, y)
で表すことにしています。画面の右に行くと x
が増えて、上に行くと y
が増えます。
ブロックの実装
ブロックは、
- 軸の位置
- 回転パターン
- 軸以外の相対位置
が分かれば表現できます。例えば、以下の通りです。
O字ブロック
軸が (0, 0)
だと仮定すると、他のセルは、
(0, +1)
(+1, +1)
(+1, 0)
が、軸からの距離になります。
相対的な位置は軸が動いても同じです。他のブロックも続けて書いていきます。
I, S, Z字ブロック
回転する場合でも、回転パターンに応じた相対位置が分かればブロック全体を表現できます。
J, L, T字ブロック
2回転のブロックと同じです。相対位置は図の中だけ記載してます。
回転数
ブロックはそれぞれ、
- 0回転(O字ブロック)
- 2回転(I, S, Z字ブロック)
- 4回転(J, L, T字ブロック)
に分けて考えてます。公式の仕様はどうなのか分かりません。
回転の注意点
回転は厳密に回しているわけではなくて、次の相対位置を取得してブロックを再構成する、という感じです。
回転途中にぶつかるブロック(セル)が存在してても、次の相対位置がそれにぶつからなければOK、という実装方法になります。