このページでは、組ぷよに付けるスクリプトを記述していきます。このスクリプトの作成については数ページに分けて解説していきますが、まずは基本的な組ぷよの挙動をスクリプトに書いていきましょう!
制作手順1の後半でも書きましたが、ぷよオブジェクトは、「コンビで活動時」と「コンビ解散後」では挙動が異なる!という話でした。何のこっちゃ?という方は制作手順1の後半を是非お読み下さい。m(_ _)m
ですので正確に言いますと、この制作手順2-1以降では、ぷよセットオブジェクト(親)に付けるスクリプトについて、説明していきます。よろしくお願いします!
まず、組ぷよってどのような動きをするか、思い出してみましょう。100回ぐらいぷよぷよやってたら何となく動きは分かりますよね…?組ぷよの動きを出来るだけバラバラに分解してみましょう。例えば↓のような要素に分解出来るでしょうか。
・自然落下(○○秒ごとに1マス分落下)
・プレイヤーの入力に応じて「左移動」「右移動」「下移動」「右90°回転」「左90°回転」
・どちらかのぷよが着地すると組ぷよはコンビ解散(各ぷよがバラバラに動き始める)
基本的にはこんな所でしょう。他にも、細かい話ですが、状況次第では特殊な動きをします。例えば、ぷよ1列分の狭い空間内に居る時は、組ぷよは一気に180°回転しますよね。ぷよぷよでよく遊んだ方ならお分かり頂けると思います。
まず、このページでは簡単な所で、箇条書き1つ目自然落下(○○秒ごとに1マス分落下)の部分をスクリプトで書いていきましょう。
では、いよいよスクリプトを書いていきましょう。「自然落下」であれば、この本に記載されているスクリプトほぼそのまま使えますので復習の気持ちも兼ねて書けると思います!
これは、Updateメソッド中に以下のようなスクリプトを書けば実現します。この本を読まれた方なら似たようなスクリプトは見たことあります…よね?
float span = 1.0f; float delta = 0.0f; //以下はUpdateメソッド内に記述 this.delta += Time.deltaTime; if (this.delta > this.span){ this.delta = 0.0f; transform.Translate(0, -1.0f, 0, Space.World); }
まず、「1秒ごとに」自然落下、にした理由ですが、「誰でも手軽に遊べるような難易度」にしたかったので、「ゆっくり落ちてくる」くらいの感覚を持てるスピードにしました。確かに、難しいレベルを選べはスピードが上がるぐらいのギミックは入れても良かったのですが、ワガハイ式ぷよぷよでは特に実装しませんでした。
ちなみに、ワガハイ式テトリスの方ではレベルアップでブロックの落下スピードを上げるギミックを入れております。スクリプトの書き方などについてはテトリス制作手順2-1を参考にして下さい。
・Time.deltaTime:この本の5-7章に詳しく解説されていますのでそちらを参照して下さい。
・transform.Translate(0, -1.0f, 0, Space.World):この書き方をすると、オブジェクトがどの向きを向いていてもワールド座標系でy方向に-1.0f動いてくれます。詳しいことは、こちらのページに解説を書きましたのでそちらを参照して下さい。
この自然落下のスクリプトを作成するだけでは「Space.World」は別に必要ありませんが、次の制作手順2-2にてぷよセットオブジェクトを90°ずつ回転させていきますので、これが無いと常に下方向(y軸-方向)に移動してくれません。なので、この時点であらかじめ書いておきました。
今回はここまでです。次回の制作手順2-2では、組ぷよの基本的挙動2つ目に当たります、プレイヤーの入力に応じて「左移動」「右移動」「下移動」「右90°回転」「左90°回転」をスクリプトに記述していきます!