キミも未来のトビラをひらこう!!
シューティングゲームを作ろう!
今回のレッスンで作るのは、robotとRocketshipが出てきて、キーボードでRocketshipを操作して、robotをやっつけるというシューティングゲームを作っていくよ!
このレッスンでは、これまで使ったことのないデータの中にある変数という機能を使っていくよ。 実際に作っていこう!
アニメーションにつかう背景・スプライトを用意して設定していこう
まずは、スプライトを確認するよ。 合計3つ設定されていればOKだよ。
次に、コスチュームを確認しよう。 robot-aのコスチューム robot-bのコスチューム robot-爆発のコスチューム
次に、背景を確認しよう。
完成だね! ここまでみんなの画面でもやってみよう!
キーボードでRocketshipを操作して左右に動かそう
ここからスプライトのうごきを作っていこう。 ステージ上で、Rocketshipがキーボードの「→(右向き矢印)」や「←(左向き矢印)」をおされた時に、押された方向にうごけるようにしていこう。
キーボードでスプライトをうごかす方法は、迷路ゲームの時に勉強したね。 イベントの中にある[スペースキーがおされたとき]のブロックを使うんだったね。 まずはRocketshipのスプライトを選択。
Rocketshipのスクリプトエリアにスペースキーが押されたときのブロックを2つ追加していこう。 そして、スペースの横の▼をクリックしてそれぞれのブロックの内容を 「a」 「d」にかえてみよう。 右が、キーボード上の「a」のキーのことだよ。 左が、キーボード上の「d」のキーのことだよ。
そして、キーボードでおされたボタンの方向にRocketshipをうごかしたいから、[x座標を変える]ブロックを使って移動させよう。 ステージの中で、右に行くにはx座標をプラスに、左に行くにはx座標をマイナスにすればよかったね。 それぞれのブロックにx座標を10ずつ変えるとx座標を-10ずつ変えるをくっつけよう。
ここまでのスクリプトができたら、ゲームをスタートした時のRocketshipの位置もきめていこう。 Rocketshipが地面のまんなかあたりにくるようにしよう。 スタートの位置をきめるは、[グリーンフラッグが押されたとき]のブロックと、[x座標を~、y座標を~にする]のブロックでできたね。 今回は、スタートの位置をx座標0、y座標-130にしてみよう!これでRocketshipのスクリプトは完成だ! 実行してうごきを確認してみてね!
キーボードのスペースキーで操作でLightningを発射できるようにしていくよ
次はLightningのうごきを作っていくよ。 Lightningは、キーボードのスペースキーをおした時に、 Rocketshipから上方向に発射されるようにするよ。 どんなブロックを使えばいいかな?
まず、スペースキーを押した時に、 Lightningのスタート地点がどこになるのかを考えよう。 RocketshipからLightningを発射させたいから、 Rocketshipと同じ場所に移動させよう。 そこから上方向にLightningをうごかせば、スペースキーが押された時に、 RocketshipからLightningが発射されたように見えるね! まずは、 LightningをRocketshipのところまで移動させるスクリプトを作っていこう。 今回は動きの中にある[マウスのポインターへ行く]のブロックを使うよ。 まずは、 Lightningのスプライトを選択。
次に、スペースがクリックされた時、動きの中にある[マウスのポインターへ行く]のブロックが実行されるようにしていくよ。 今回は▼ボタンをクリックして、 Rocketshipところに行くようにしよう。
これで、スペースキーを押すと、 LightningがRocketshipに重なるようになったね。 スペースキーを押した時のLightningの位置はバッチリだ!
次に、 Lightningを上向きにして、まっすぐすすむようにしていこう。 「上は0度を向ける、まっすぐ進むは10歩動かす」でうごかすことができるね。
これで、スペースキーをおすと、Lightningが発射されるようになったね!
なんどもスペースキーをおしてみよう。 うまくうごかないね。 うまくうごくにはどしたらいいか考えてみよう!
Lightningのスクリプトを修正してなんどもスクリプトが実行できるようにしよう
前のチャプターでRocketshipからLightningが発射できるようにしたけど、1回しかLightningが発射できなかったね。どうなっているのか見ていこう。
スクリプトエリアを見てみると、 ブロックのかたまりが光ったままになっているよね。
これは、[ずっと10歩動かす]が実行されたままになっているからなんだ。 画面を見ると、たしかにステージの上の方に弾がのこっているね。 だから2回目にスペースキーをおしても反応がないんだね。
だから、 Lightningはステージの端まで行ったら実行を止めるようにしよう。 制御の中の[すべてを止める]のブロックを使って、すべての部分をこのスクリプトにかえることでスクリプトを止めることができるようになるよ。 端まで行ったらというのは、調べるの中にある[~に触れたら]のスクリプトで調べることができるね!
これでなんどもLightningが発射できるようになったかな? 実際にステージでうごかしてみよう! Lightningは何度も発射できるようになったけど端まで行った時にステージにのこってしまうから、Lightningはうごきがおわったらスプライト自体をかくして、スペースキーがおされた時に、また現れるようにしよう。 Lightningが動いているときだけ表示して、動かないときはかくしておこう。
これでLightningのスクリプトは完成だよ! なんどもスペースキーをおしてLightningを発射させてみよう。
複数のコスチュームが切り替えられるようにしよう
さいごに敵のRobotのうごきを作っていこう。 Robotは空中をずっと左右に移動するように、まずは横のうごきを作っていこう!
まずは、 Robotのスプライトを選択。 つぎに、グリーンフラッグがおされた時に左右に動いて端についたら、逆方向にうごくようにしていくよ。
この時、Robotのスプライトの回転の種類を ◀︎:▶︎ にするのをわすれないようにしよう! これで、グリーンフラッグが押された時に、Robotが左右にうごくようになったね。
つぎに、robotのうごきに合わせてコスチュームをかえられるようにしていこう。 robotは3つのコスチュームをもっていたね。
それぞれのコスチュームを切り替えしていこう。
aとbのくりかえしだけではないから、次の[コスチュームにする]のブロックを使うと a、b、爆発、a、b、爆発とじゅんばんにかわってしまうから、このブロックは使えないね。 こんな時はいちど、どのコスチュームの時につぎにどのコスチュームにするかを整理して考えてみよう!
コスチュームの切り替えはこの4つのパターンがあるね。
まず、通常の時(横にうごいている時)とLightningに当たっている間で分けて考えよう! 2つの条件を場合分けしたいので、[もし~なら~でなければ~]を使っていくよ。
これで、Lightningに当たっている間に爆発のコスチュームになるようになったね。
次は、横にうごいている時のコスチュームの切り替えだよ。
「コスチュームがaの時 → 次はbのコスチュームに」 「コスチュームが爆発の時 → 次はaのコスチュームに」 この2つは、次のユニフォームにするだけでいいけど、 「コスチュームがbの時 → 次はaのコスチュームに」は、少しむずかしいね。
内容を2つの場合に分けよう!
スクリプトを作ってみよう。 ここまではできそうだね!
ただ、コスチュームがbのとき というブロックが見当たらないね。 コスチュームがいつの時かを指定したい時は、 演算の中にある[~=~]と 見た目の中にある[コスチュームの番号] というブロックを使っていくよ。 [~=~]というブロックの、=(イコール)は、〜と〜 が同じことを示すときに使うよ。
そして、コスチュームの番号と組み合わせることでコスチュームの番号を指定することができるんだ。
コスチュームの番号は、コスチュームのところにある数字のことだよ。
今回コスチュームがbの時。としたいから、2つのブロックを使って、コスチュームの番号が2の時というブロックを作るよ。
これをさきに作ったスクリプトと、 くみあわせることで、コスチュームが bの時は次のコスチュームではなく、 aのコスチュームにすることができるね!
これでコスチュームのきりかえは完成だ! 最初に作ったうごきのスクリプトと組み合わせておこう。
ここまでできたら実際にゲームをスタートして、Robotのうごきを確認してみよう! 少しスクリプトが複雑になったので、頭の中を整理しながらすすめてみてね!
変数をつかってゲームの得点の計算ができるようにしよう
今回は得点をつけられるようにしてみよう! また新しい機能を使っていくよ!
得点を計算したい時には、データの中の「変数」を使っていくよ。
変数についてせつめいするね! 「変数」とは、 中身の変わるデータのことで、すごくかんたんに言うと「どんどん変わる中身の数字をおぼえてくれる人」とイメージしよう。
「得点」という名前の変数を作れば、今の得点をおぼえておくことができるようになるよ。 まずは、データの中にある「変数を作る」をクリックして、変数名を「得点」と入力してOKボタンをおそう。
この時、すべてのスプライト用と、このスプライトのみと選択が出てくるので、今回は「すべてのスプライト用」を選択しておこう。 これで「得点」という変数は完成だよ!
ステージの左上に、作った変数とその中身が表示されるようになるよ!
ステージ上の表示をけしたいときは、 データの中の「得点」の横にあるチェックマークを外すと表示が消えるよ。 もし、作った変数の名前をへんこうしたりけしたいときは、データの中の変数名を 右クリック(もしくは、Shift+クリック)すると編集することができるよ。 まずは得点を計算するじゅんびが完了だよ!
変数の数字を変えて得点を数えられるようにしよう
変数は数字を覚えてくれる人のイメージだったね。 なので、「得点を~にする」で数字を指定してあげると、変数はその数字を覚えてくれるよ。
ためしに得点を4にするとして、ブロックをクリックしてみよう。 ステージの左上の得点の表示も4になったね! 0にしたい時は得点を0にするを実行すると、得点が0という数字をおぼえてステージの左上も0になるよ。 そして、得点を1ずつ変えるを実行すると、得点が今覚えている数字から1つずつふえていくよ。 クリックしてためしてみよう!
この得点を使ってゲームの得点を実際にかぞえられるようにしてみよう! 今回は、RobotにLightningが当たったら得点を1ふやす。というルールにしていくよ。 まずは、Robotのスクリプトを選択。
グリーンフラッグがクリックされて、ゲームがスタートしたらまずは得点を0にするよ。 そして、Lightningが当たった時を1点としたいから、Lightningにふれたら得点を1ずつ変えるようにしていくよ。
これで、RobotにLightningが当たったら得点がふえていくようになるよ! でも、このままだとLightningが当たっているあいだずっと得点が増え続けてしまうね。 次のチャプターでかいけつしよう!
変数で得点を数えてゲームのクリアを作ろう
得点を数えて3点になったらゲームをクリアにする。 といううごきを作っていこう。 今回はゲームのクリア得点が3点、つまり得点が2点を超えたらクリアにしてあげればいいね!
超えたらには演算の中の[~>~]を使おう!
これで、得点が2点を超えた時、 つまり3点になった時。 という条件ができたね。 ゲームをクリアしたら、Robotのうごきを止めて、爆発のコスチュームで 「うわーーーーー!」というセリフを言った後、ゲーム全体のスクリプトを止めるようにしよう。
制御の中のすべてを止めるの▼ボタンをおして、スプライトの他のスクリプトを止めるを使うことで、UFOの動きが止まり、コスチュームも爆発のままで止まるよ! さあ、これで、ゲームをスタートしてみよう!
LightningがUFOに当たると、1発でゲームクリアしてしまったね。 1発当たっただけなのに得点が3になっているよ。なぜだろう?
もういちどゲームをスタートして、Lightningが当たったときに得点の中身がどう変わるかよく見てみよう! よく見ると、3まで一気にすごい速さで変わっているね。 こうなってしまう原因は、LightningがRobotに触れてすすんでいる間ずっとLightningに触れたの状態になってしまって、「得点を1ずつ変える」がくりかえし実行されてしまうからなんだ。
こういう時は、[もしLightningに触れたなら]のさいごに[端に触れた ではない まで待つ]を入れてみよう。 「 Lightningに触れたではない = Lightningから離れた状態まで」待つ。 というスクリプトになるよ。
これで「LightningがRobotからはなれるまで繰り返し」の実行を止めることができるよ。 一気に得点が計算されることがなくなるね。
すべてのスクリプトが完成だよ! グリーンフラッグを押しておしてあそんでみよう!
さいごにここまで学んだことをおさらいしてみよう。 このレッスンでは新しいスクリプトをいっぱいべんきょうしたね。 しっかり復習していこう。 作れる作品もむずかしくなる分、頭の中を整理しながらすすめないと、つまずいてしまうので、わからなくなったら今何を作っているのか? 何をするための機能なのか? を考えながらすすめるのがいいよ!
まずは、変数を勉強したね。
変数には名前がつけられて、得点という名前の変数を作れば、今の得点を計算しておくことができるようになるよ。 数字を変えたり、数字を1つずつ変えていくことで点数を数えることができたね。
どうなったら変数を変えるのか。というルールをきめて点数を数えていくと、ゲームがよりおもしろくなるよ!
今回のレッスンでは、演算のなかのブロックも使ったね。
演算のブロックは足し算や引き算といった計算や、[=、>]を使った数や状態をくらべるのに使えるブロックがいっぱいあるんだよ。
今回使ったのは、[~=~]、[~>~]、[~ではない]の3つだったね。演算のブロックを使うことで、今あるブロックだけでは作れないブロックを作ったりすることができるのでとっても便利だよ! このあとも何度も出てくるブロックなので、しっかりおぼえておこう!