組ぷよに付けるスクリプトを記述しよう2
このページでは、前回に引き続き、ぷよセットオブジェクト(親)に付けるスクリプトを記述していきます。
基本的な組ぷよの挙動って?(復習)
前回、組ぷよの動きをバラバラに分解しました。その結果、↓のような要素に分解出来ましたね。
・自然落下(○○秒ごとに1マス分落下)
・プレイヤーの入力に応じて「左移動」「右移動」「下移動」「右90°回転」「左90°回転」
・どちらかのぷよが着地すると組ぷよはコンビ解散
で、前回は基本的挙動1つ目自然落下(1秒ごとに1マス分落下)の部分をスクリプトで記述しました。今回は基本的挙動2つ目のプレイヤーの入力に応じて「左移動」「右移動」「下移動」「右90°回転」「左90°回転」をスクリプトで記述していきましょう!
基本的挙動2「組ぷよの操作」をスクリプトで記述しよう
今回もどんどんスクリプトを書いていきます。今回の話もこの本に記載されているスクリプトが結構使えますので復習の気持ちで書けるのではないでしょうか…?
キーボードの割り当て
その前にまず、どのボタンでどの操作を割り当てるかを決めましょう。「何でも良いやん!」と言われたら確かにそうなんですが、基本的に直感に合うボタンを割り当てるべきでしょう(極端なNG例:←キーに右方向移動、→キーに左方向移動を割り当てるのはさすがにどうかと…)。ということで、←キー:左移動、→キー:右移動、↓キー:下移動、がまあ自然でしょう。
ちなみに、世の中のゲームにはWキー:上、Aキー:左、Sキー:下、Dキー:右、を割り当てる物も結構あるようです。次制作する時はそうしようかなー。
あとは回転ですが、これも直感に合う位置関係として、左回転のキーより右回転のキーを(物理的にも)右側にあるキーに割り当てましょうか。どんな組み合わせでも良いのですが、ここでは、Tabキー:左90°回転、Spaceキー:右90°回転としました。例えばZキーとXキーに割り当てるとかでも(お互いのキーが隣同士に合って)良いかもしれませんね。
操作スクリプト記述
では、各移動のスクリプトを書いていきましょう。この本を読まれた方なら似たようなスクリプトは見た(書いた)ことある…と思いますので、割と書きやすいかと思います。ですので、左右下移動・左右回転まで一気に書いてしまいましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
//左右移動 float key = 0.0f; if (Input.GetKeyDown(KeyCode.LeftArrow)) key = -1.0f; if (Input.GetKeyDown(KeyCode.RightArrow)) key = 1.0f; transform.Translate(key, 0, 0, Space.World); if (Input.GetKeyDown(KeyCode.DownArrow)){ transform.Translate(0, -1.0f, 0, Space.World); } //右回転 if (Input.GetKeyDown(KeyCode.Space)){ transform.Rotate(0, 0, -90.0f); } //左回転 if (Input.GetKeyDown(KeyCode.Tab)){ transform.Rotate(0, 0, 90.0f); } |
このようか具合でしょうか。制作手順1でも書きましたように、右図中での1マスは幅1.0fですので、キー操作による左右下移動も1回当たり1.0f分の移動にしてあります。
↑のスクリプトでは、特に新しい話は出てきませんので、スクリプト文に関する解説は特にありませんが、Space.World、各キーボードキーのスクリプト文への書き方についてはこちらのページにも纏めてありますので併せて参考にして下さい。
また、今回書きましたぷよ操作のスクリプト文についてはあくまで基本的な要素のみになります。例えばですが、このままでは壁を越えて横に動けてしまい、ゲームになりませんよね。ですので、後々ここのスクリプトについては制作手順2-6の方【執筆中】でもう少し手を加えていきます。
最後に
今回はここまでです。次回の制作手順2-3では、組ぷよの基本的挙動3つ目に当たります、どちらかのぷよが着地すると組ぷよの動きは終了(各ぷよがバラバラに動く)をスクリプトに記述していきます!ここからちょっと難しくなっていきますが、しっかり考えて上手にスクリプトを書いていきましょう!