今回つくるゲーム
難易度
今回はスクラッチでフォートナイト風ゲームを作っていきます。フォートナイトの最大の特徴である「建築」を簡易的に再現しています。プレイヤーが階段と壁を建築し、敵の攻撃を防ぎながら横スクロールを前進していきます。様々な方向に銃口を向ける敵コスチュームの作り方も学べます。別の記事で紹介しているマリオ風ゲームの作り方と合わせると、横スクロールアクションゲームに関してかなり深く理解することができるようになりますので是非あわせて挑戦してみてください。
まずは実際にゲームをプレイしてみてください。
左右の矢印キー:移動 スペースキー:ジャンプ Wキー:壁建築 Sキー:階段建築 Gキー:攻撃
はじめに
まず、以下をリミックスしてください
こちらにはゲームを作るのに必要な素材が揃っています
プレイヤーの動きをつくる
ここではプレイヤーのおじさんが左右に動いたりジャンプしたりできるようにしていきますが、こちらも以下の記事に詳しく解説していますのであわせてご確認ください。
ターゲットの動きを作る
上記記事でも解説している通り、プレイヤー(おじさん)のスプライトに直接コードを書くのではなく、少しスリムに設計されたターゲットで動きをつくり、プレイヤーはそのターゲットを追従します。
ターゲットのコードの全貌は以下になります。ターゲットのスプライトにコードの詳しい説明はこちらをご確認ください
プレイヤー(おじさん)の動きを作る
次にプレイヤーの動きを作っていきます。プレイヤーのスプライトに以下のようにコードを書いていきます。コードに関する詳しい解説はこちらをご確認ください。
左右に歩く動きは、コスチューム1〜4を繰り返し表示します。
あわせて、先ほど作成したターゲットの幽霊の効果を100にすることで、以下のようにおじさんがマップ内をかけまわれるようになります。
スクロールさせる
次にスクロールをつくっていきます。今回はプレイヤーが中央より少し右のX=-50で右矢印を押すと背景がどんどんスクロールしていくようにします。
プレイヤーのスクロール
ますはプレイヤーがX=-50より右に進めないようにします。
背景のスクロール
背景の横スクロールをするのに、ステージ、背景1、背景2にそれぞれ以下のプログラムを書きます。
背景のスクロールについては以下の記事で詳しく解説していますのでなぜこのようなプログラムになるのかはこちらを参考にしてください
ここまでできたら、きちんとスクロールできるか確認しましょう。以下のように動けば成功です。
プレイヤーが建築をする
次に、壁と階段を建築できるようにしていきます。
Wキーを押すと壁を建築し、Sキーを押すと階段を建築します。
以下のようにWとSを同じ場所で押すと下図のようにちょうどくっつくように調整します。
壁と階段を建築する
壁と階段のコードは以下の通りとなります。
背景と同じ考え方でスクロールさせ、端に着くと消えるようにします。
WキーとSキーを押すときちんと建築ができるか確認しましょう。
空中に建築をすると落下する
次に空中に建築すると落下するようにします。
階段を登れるようにする
壁を建築するとそれより前には進めませんが、階段を建築した時には階段を登れるようにしなければなりません。いまのままでは階段のふもとで右矢印キーを押しても階段が登れないので、登れるようにコードを変えていきます。階段に触れると少しだけジャンプするようにすると階段を登ることができます。
ターゲットのスプライトに移動して以下のように”左右移動”のブロックのコードを変更します。
これで以下のように階段を登れるようになっているはずです。
敵の動き作る
では、ここから敵を作っていきます。
コスチュームの向きの考え方を理解する
まず敵のスプライトに移動し、コスチュームを見ると、以下のように一見でたらめな向きに設定されているように見えます。
これは、この後に設定していく銃弾が発射される向きを敵スプライトの向きと一致させるからです。
例えば敵タイプ1だと実際は左(向き:-90)に向いてその向きに銃弾が発射されるので、-90度に動かすと左向きになるように初めの位置を調整するということになります。
もう一つのポイントは銃弾が発射される場所が銃の先端になるということです。そのために、コスチュームの中心を銃の先端に設定しています。
以下のように実際にスプライトをプレビューで回転させてみましょう。銃の先端を中心に回転して、
銃タイプ1と2だと-90度で、銃タイプ3だと-123度でちょうど左を向くことになります。
青の矢印の向きがスプライトの向き、つまり、銃弾の向きになるとイメージしてください。
移動距離を計算する
敵のコードを書く前に、プレイヤーの移動距離を計測できるようにしましょう、プレイヤーの移動距離に応じて、敵を出現させるようにするためです。
ステージのコードに計算するたびに移動距離を1ずつ変えるという指示を追加します。
敵のコードを書く
次に敵のスプライトに移動して、以下のようにコードを書きます。
移動距離が40の倍数(40で割ってあまりが0)のときに敵1は下層、敵2は中層、敵3は上層にランダムに出現するようにします。
スクロールと端で消える処理も忘れずに書いておきます。
実際にプレイヤーを動かして敵がどんどん出てこれば成功です。
敵が攻撃する
次に敵が攻撃できるようにします。敵のコードに以下のようにプログラムを追加します。
つねに、クローンのx座標・y座標・向きを記録して、2秒ごとに敵攻撃の合図を出します。
次に敵の弾のスプライトに移動します。以下のように、敵攻撃の指示を受け取った時に、クローンを作り、記録された場所(敵攻撃x,敵攻撃y)に移動して記録された向き(敵の向き)に発射されます。
壁や階段を破壊する
次に敵の弾が当たったら、建築した壁や階段が破壊されるようにします。
壁と階段にそれぞれ以下のように被弾のコードを追加します。
さらに、階段が壊れた時にその上にある建築物は一緒に破壊されるようにしなければなりません。以下のように、壁と階段のコードに、階段が被弾したときの処理を追加します。土台が崩れてから上部分が崩れるように少し時間を待つように設定しましょう。
最後に、壁が階段が被弾した時に、銃弾も消えるようにしましょう。
敵の弾のスプライトに移動して、以下のようにコードを追加します。
これで、敵からの攻撃は一通り完成です。
以下のように敵の銃弾で建築物が破壊されれば成功です。
おじさんの攻撃
おじさんも敵を攻撃できるようにします。
おじさんには最初から攻撃のコスチュームが設定されています。Gキーを押すとコスチュームを攻撃に変更して攻撃の指示を送ります。この時に、単純にGキーが押された時に攻撃の指示を送ってしまうと、1度キーを押しただけで連射されてしまいます。連射防止のために、Gキーが押されて、Gキーが話された時に攻撃指示が出るようにします。このテクニックは様々なシーンで活用できますので覚えるようにしましょう。
次におじさんの弾のスプライトに移動して、以下のようにコードを書きます。ここでのポイントは、クローンされた時の位置を銃の先にするために、少しおじさんの中心位置から調整を入れています。
敵がおじさんの弾に被弾したら消えるようにしましょう。
敵のスプライトに移動して以下のようにコードを追加します。
以下のように敵を攻撃できれば成功です。
ゲームオーバーをつくる
最後にゲームオーバーを作ります。敵の銃弾に当たるとゲームオーバーですが、それ以外にも地面に穴を開けておいて、落ちたらゲームオーバーということにしたいと思います。
背景1、2それぞれの地面に穴を開けていきます。穴をあけるのは適当な位置に背景のグレーと同じ色の四角を描くだけです。
そのうえで、ターゲットのスプライトに以下のようにゲームオーバーのブロックを追加していきます。
y座標<-180というのは、つまり穴に落ちたということです。
プレイヤーが簡単にジャンプで穴を飛び越せないように、プレイヤーのジャンプ力を下げておきます。
プレイヤーのジャンプ力はターゲットの中にある「ジャンプの勢い」です。ここを5にすることで、ジャンプで穴を飛び越えられないようになります。
さいごに、gameoverのスプライトに以下のようにコードを書きます。
すべてのコード
これでフォートナイト風ゲームの作り方の解説は終了です。全てのコードは以下から確認できます。ゲームをさらに難しくしたり、BGMや効果音を入れるなどしてより完成度の高いゲームを作ってみてください。
コメント
むごいむごい(すごいすごい)
あの…「ドンキ−コーングー」作りたいのですが、
ボールが転がせません(泣)
助けでぐださい…
ドンキーコングのこと?
それじゃなかったら…
まあ、なにかセンサー機能を作れば、
例・センサーをボールへ移動→xを10変えたあと、yを-10変える→足場に触れたなら、そちらに動かす。
って感じは?(知りませんけど!)
これはいいアイデアですね!
斜めの坂をボールを転がすということでしょうか?
https://www.youtube.com/watch?v=OwUz2V9yrUU
こんな感じですかね?坂道の角度を決めて、ボールをその向きに向けて”○○歩進める”を使えば転がります
近いうちにドンキーコングも作って作り方をYoutubeかブログにあげますね