Unity で テトリス風ゲームを作ってみる#6
前回の続き
前回テトリミノの生成と落下まで実現方法が決まったので、今回は操作を考える。
テトリミノの操作
テトリミノは最低限キーボードで操作したい、できればコントローラーでも操作できるとよい。Unity ではInput System という仕組みが提供されていて、それを使えばキーボードやコントローラー、タッチパネルからの入力イベントを受信することができる。
Input System を使うには Package Manager から追加でアセットをインストールする必要がある。詳細は、別途説明。
必要なキーイベントは、左右キー (カーソルキーの右、左に割り当て)と下キー(カーソルキーの下に割り当て)、あと左右の回転キー(QとWキーに割り当て)の5つ。
まずは左右キーによるテトリミノの移動方法を確認。
キーイベントはInput System を使って受信し、Input System からTetrimino GameObject にアタッチされたスクリプトのコールバック関数を呼び出すことで処理できる(詳細は別途説明)。
左右キーイベントを受け取ったら、Tetrimino GameObject の位置を 1 つ左右に移動させる。もちろん移動前に移動位置にブロックがないことをRaycast を使って事前に確認する。
次に下キーによるテトリミノの高速落下。
Wikiによると自由落下時の速度の20倍の速度で落下させる必要があるが、これは下キーを押している間だけ、落下速度計測の間隔を短くすれば実現可能。"キーを押している間"の検出は、Input System からキーを押したときと離したときがそれぞれイベントで受信できるのでそれを使えば確認できる。
最後は左右回転キーによるテトリミノの回転。
回転の実現方法は以前考えたとおり。今回は回転前に回転後の位置にブロックがあるかないかをRaycast を使って確認する部分を追加すれば実現できる。
次の記事