今回は、落ちゲーアプリのプレイヤーのスクリプトを作りたいと思います。前回岩避けってタイトルにしていましたが、よく考えたら「落ちゲー」でしたね。
プログラミングあるあるですが、ある程度時間が空いてしまうと前回どこまでやっていたのか分からなくなる事ってありますよね。5日ぶりなので、勘を取り戻さなければ。
キャラクターのスクリプトを作りアタッチする
C#を使うのでプロジェクトウィンドウ内を右クリックして、「Create」→「C# Create」からスクリプトファイルを作成します。
キャラクターの動きをスクリプトにするので、「CharaController」という名前にしました。
スクリプトを作る準備は整ったものの、肝心の動作についてしっかり確認しておかないといけません。何をどうすれば、どういう動きをするのかですね。
イメージ図はこんな感じですね。両サイドに矢印キーを配置して押したボタンの方向に猫が移動することになります。今回はこの動作をスクリプトにする必要があります。
はい、こんな感じでOK。意外にスッキリしています。
まずは、矢印キーが押されたことを察知するために、「GetKeyDown」メソッドを使います。
これで、どちらかのキーが押された瞬間に一度だけtrueを返すようになります。
左矢印キーが押されれば、14行目のif文の条件を通過して、猫が左に移動します。どれくらい移動させるかはtransform.translateでXの値を指定すれば良いですね。YとZは関係ないので0です。
出来たスクリプトを保存したら、ヒエラルキーウィンドウにあるキャラクターに対してアタッチします。この時一度エラーが出たのですが、原因はスクリプトのクラス名とファイル名が一致していない事によるものでした。
アタッチ出来ない場合は、クラス名とファイル名が同じか確認します。
アタッチが出来たら、ゲームを実行して動作を確認。無事に矢印キーを押したら猫が左右に移動しました。Xを「2」にしていますが、1回押すだけでも思った以上に移動しますね。もっと細かな動きを実現したい場合は「1」でも良いかも。
落下物のスクリプトを作成する
次に、上から降ってくる落下物のスクリプトを作ります。
まずは、この落下物の名前を決めたいと思います。
シーンビューに配置してみましたが、偽元気玉って感じですね。元気玉のイメージが悪くなりそうなので「ギザギザボール」という名前にします。
名前が決まった所で、先ほどと同様に新しいスクリプトを作成します。
Translate(0,-0.1f,0)で同じスピードでギザギザボールが下に降りていきます。
さっきまでは、Xの値を変更しましたが、ギザギザボールの場合は縦方向の動きになるのでYの値を指定すればOKです。フレーム毎に少しずつ移動させるのでUpdateメソッドの中に書き込みます。
画面外に消えたギザギザボールを破棄させる
上から降るということは、時間が経つと画面外に消えるということになります。
消えたボールはどうなるのかというと、見えない部分でも相変わらず落ち続ける処理を行います。
これは、コンピュータにとってすごく無駄な処理です。負担がかかるだけなので、外に消えたボールは破棄するようにします。
その為のスクリプトが、16行目から18行目に書いてあります。
もし、ボールのY座標の値が「-5.0」よりも小さくなった場合は、Destoryメソッドを使って破棄するといった処理になります。
今回は、自分自身(ギザギザボール)を破棄することになるので、引数に「gameObject」を渡します。gameObjectで自分自身という意味になります。
ギザギザボールにスクリプトをアタッチする
それでは、ボールに対して今作ったスクリプトをアタッチします。
アタッチ出来たら、ゲームを実行して動作確認をします。
等速でボールが落下して、画面外に消えたら、ヒエラルキーウィンドウからギザギザボールがなくなります。
ボールが落ちるスピードですが、初心者向けって感じのスピードです。「-0.1f」から「-0.2f」に変更するだけで、ぐーんと難易度が変わりますね。単純に2倍のスピードで落ちてくるので、一気に上級者向けになります。
現状だと、猫の背後をすり抜けてダメージを与えられることもありませんので、次は当たり判定を実装していきます。