今回つくるゲーム
難易度
今回はスマブラ風の格闘ゲームを作っていきます。左右の動き、ジャンプといった基本的な動きに、コスチュームを変化させることで動きをつけ、パンチや波動拳などの技を繰り出せるようにします。この基本がおさえられるといくらでも複雑な格闘ゲームが作れるようになります。
以下が今回つくるゲームです。左右矢印で移動、上矢印でジャンプ、Pボタンでパンチ、Oボタンで波動拳が出せます。今回はおじさんの動きまで作ります。
※スクラッチ初心者の方は、まずこちらの、
もぐらたたきゲームの作り方(初級)
からチャレンジしてみてください。
準備
まずは、こちらにアクセスして、リミックスをしてください。
スマブラ風格闘ゲーム(素材)
格闘ゲーム作りに必要な、2体のキャラクターと技がすでに用意されています。
ステージを作る
まずは格闘ゲームのステージを作っていきます。
今回はすでに背景として用意されているBlueSkyを使います。
次に地面を作っていきます。背景とは別に一つのスプライトとして地面を作ることが非常に重要で、この地面のスプライトがないとキャラクターがジャンプできません。ネコのマークにマウスオンして、描くを選びます。
背景のBlueSkyにかぶせるようなかたちで、四角ツールを使って地面を描きます。
これでステージができました。次からはキャラクターの動きを作っていきます。
キャラクターを動かす(左右)
まずはキャラクターを左右に動かしていきます。
おじさんのスプライトのコードに以下のコードを書き込みましょう。大きさを少し小さく(90%)にして、最初の立ち位置を左端の方に設定します。そして、右矢印が押されたら10づつ、左矢印がおされたら−10ずつ、X座標を変えることで、前後させることができます。
ただこのままだと以下の動画のように左矢印をおしたときにそのまま後ずさりしてしまいます。
次に左矢印を押した時に逆を向くようにします。
それには向きを使います。右向きが90、左向きが−90となるので、以下のようにコードを追加します。すると、以下の動画のように左を押した時はおじさんも左を向くようになります。ただし、キャラクターを反転しているだけなので頭の「ビンゴ」という文字が反転してしまっているのがわかります。このようなことを避けるために、格闘ゲームやアクションゲームのキャラクターには文字をのせないというのが鉄則だったりします。もしくは「M」のような線対称な文字だと、反転させてもかわりませんので、そのようなアルファベットを使うこともあります。今回はこのまま続けます。
キャラクターを動かす(ジャンプ)
次にジャンプをさせます。地球には重力があります。つねに地面に引きつけられているので、ジャンプしてもまた地面にもどってきます。これをコードで表現します。
以下のようにおじさんのコードに、重力を表現するコードを追記します。地面に触れていない時にはY座標を−10ずつ変えることで、空中にあるものが地面まで落ちてくるようになります。このためにさきほど地面のスプライトを作りました。
次に地面に触れている時にジャンプをさせます。もし地面に触れたならの中に、「上向き矢印が押された時に、Y座標を10ずつ変えるのを20回繰り返す」という指示を入れ込みます。ここでの繰り返す数によってジャンプの高さが変わります。キャラクターによって高さを変えるというのも良いと思います。
では、緑の旗を押して、実際におじさんをうごかしてみてください。左右に動きながらジャンプもできるようになりました。
ただ、このままではおじさんが棒立ちのまま移動するので、ゲームとしてはいまいちです。動きにあわせて体に動きをつけていきます。
キャラクターに動きをつける(コスチュームの変化)
キャラクターに動きをつけるというのは、つまりコスチュームを変えていくということです。
コスチューム変化の指示は、先ほどの左右・ジャンプの指示とは別の指示として作っていくのがコツです。まずは大枠の設計図からつくっていきます。
地面に触れていない時:「ジャンプする」
地面に触れていて、左右のキーが押されている時:「歩く」
地面に触れていて、何も押されていない時:「止まる」
という3つの動きを定義します。このあと、それぞれの定義を指定していくのですが、このように、まずはブロック定義機能を使って、大枠の設計図を作り、その後にそれぞれの定義を指定していくという習慣をつけると、とても見やすいコードになるのでオススメです。
ここからそれぞれの定義を指定していきます
歩く:コスチュームが1〜4の繰り返し
止まる:コスチューム4と4−2の繰り返し(格闘ゲームでよくある、止まっている時の揺れを表現)
ジャンプする:コスチュームをジャンプにする
それぞれ、コスチュームとコスチュームの間に少し待ち時間を入れることで、動きの速さを調整しています。
ここまでできたら、緑の旗を押しておじさんを動かしてみてください。きちんとコスチュームが変化して動きがでてきたことがわかります。
ただ、ジャンプして着地した時に足が地面にめり込んでしまっています。これはジャンプのプログラムではタイミングによって起こってしまうことなので、補正していきます。一つ前の章で記載した、ジャンプのコードに以下のように地面に触れた時に必ずY座標が−96になるように設定します。
これで足がめり込んでしまう問題も解決できました。
技を出す(パンチ・波動拳)
おじさんの動きの仕上げとして、技を出していきます。今回はパンチと波動拳の2種類の技を繰り出すことにします。さきほどと同様、まずは設計図をつくります。おじさんのコードに
Pを押した時にパンチ
Oを押した時に波動拳
という設計図を追加していきます。
ここからパンチと波動拳の定義を作っていきます。
まずはパンチです。以下のようにパンチのコスチュームを5回繰り返して0.5秒待つようにしました。これはつまり、パンチを出している時間を少し長くして、すぐに連続でパンチを出せないように生業しているということになります。
次に、波動拳です。波動拳も同じ考え方ですが、ポーズだけではなく、そこから波動拳が出てこなければなりません。「波動拳を出す」というメッセージを作成し、
次に、波動拳のスプライトに移動し、「波動拳のメッセージを受け取った時」のコードを書いていきます。波動拳のスプライトはおじさんと同じ場所に移動して、向きもおじさんと同じ向きになり、端に触れるまで、10づつ移動させるということになります。
緑の旗をおして、実際にOのボタンを押して、波動拳を出してみてください。
キャラクターの動きとともにおじさんの向きにあわせて波動拳が出ているのがわかります。
今回はここまでになります。
ここまでのコードはこちらでも確認できます。
スマブラ風格闘ゲーム(その1)
次回はおばさんの動きを作り、新技「頭突き」も追加されます。さらに攻撃を受けるとHPが下がっていくようにします。こちらから次の記事に進んでください。
スクラッチでスマブラ風格闘ゲームの作り方(その2)
コメント
ありがとうございます。とても、わかりやすかったです
ありがとうございます!そう言っていただけると嬉しいです