今回つくる動き
難易度
今回はスクラッチでプラットフォームゲーム(プラットフォーマー)の基本の動きの作り方を解説していきます。左右移動・ジャンプに加え、ここでは壁キックの方法も学習できます。ジャンプや壁キックをスムーズにできるようにするためには重力の考え方をマスターする必要があります。今回のコードは一度作れば使い回せるので、是非いちど自分の力で作って、プラットフォーマーゲームづくりに役立ててください。
まずは実際にゲームをプレイしてみてください。
コースを作ろう
まずはプレイヤーとコースを作っていきます。プレイヤーとコースの素材はこちらにもあるのでこちらをリミックスしたり、素材をコピーしてもらっても大丈夫です。コードのみ学習したい人は読み飛ばしてください。
プレイヤー
プレイヤーはネコでもいいですが、プラットフォームゲームでよく使われるボールのキャラクターをつくってみましょう。以下のように、スクラッチにもともと用意されているボールのコスチュームに目をつけてあげます。目をつけておくことでどっちに向いているのかがわかるので便利です。
コース
コースは今回は以下のように作ります。地面・壁・天井それぞれの色をしっかりと区別できるように色分けすることがポイントです。
横移動・ジャンプ
では、まず横移動・ジャンプができるようにコードを組んでいきます。
ここで大切な考え方が重力とジャンプの勢いです。実際にジャンプをした時を想像してみるとわかりやすいですが、どれだけ勢いよくジャンプしても、一番高くまでジャンプした後は落ちてきて着地します。それは常に重力がはたらいているからです。そして、地面に着地したときにそれ以上体がめり込まないのは地面から逆向きの力を受けているからです。
この考え方をコードに書くと以下の通りです。このコードをプレイヤーのスプライトに書いていきます。
1つ1つのブロックについてはこちらの記事で詳しく解説しているのであわせて確認してください。
これで、実際にプレイヤーを動かしてみましょう。以下のように動けば成功です。
壁キックができるようにする
次に壁キックができるようにしましょう。
先ほどのコードでジャンプ中=0のときだけジャンプができるようにしました。これはジャンプ中にジャンプ(つまり2段ジャンプ)ができないようにするためです。
つまり、ジャンプ中でも壁に触れた時にはジャンプができるようにすれば、壁キックができるようなります。壁に触れた時に、メッセージを発信するようにしていました。
先ほど書いたコードに以下のコードを追加します。壁に触れた時に壁キックができるようになり、逆向きにぴょんと20歩飛び上がります。ただし、ジャンプの勢いは地面でジャンプするよりも少し弱くしています。
では、動きを確認してみましょう。以下のように動けば成功です。
すべてのコード
これで、基本的な動きのコードは完成です。コースを作ったりジャンプの勢いや重力を調整したりして、自分なりのプラットフォームゲームを作ってみてください。
すべてのコードはこちらから確認できます。自由にリミックスしてください。