mywayなプログラミング生活ブログ

プログラミング関連の記事を書いています。作る様子がわかる様に動画も作っています。

Scratch2(スクラッチ2)でシューティングゲームを作ろう(2回目)

myway@おじさんです。

前回の続きです。

今回は、宇宙船から弾を発射できるようにします。

 

動作環境について

OS:MAC OS X(Windowsでも操作はほとんど変わりません)

エディタ:Scratch offline editor(ver.454)

 

1.準備

前回保存したプロジェクトを開いて下さい。

画面左上の「ファイル」をクリックしてから、「ひらく」をクリックして、プロジェクトを開いて下さい。

2.弾を追加

弾のスプライトを追加します。

「あたらしいスプライト」の横にあるアイコンをクリックして、ballを選択してから、画面右下の「OK」ボタンをクリックします。

f:id:mywayhaojisan:20170506102326p:plain

f:id:mywayhaojisan:20170506102420p:plain

そうすると、ボールが追加されます。

f:id:mywayhaojisan:20170506102434p:plain

 

3.「弾を撃つ」のプログラム

では、弾を撃つプログラムを作っていきます。

まずは、宇宙船のプログラムです。

f:id:mywayhaojisan:20170506102502p:plain

どこが変わったかわかりますか?

答えは、「ずっと」ブロックの最後に「もしスペースがおされたなら」のブロックが追加されています。

このブロックは「スペースキーがおされたら、スプライト"Ball"のコピーを作る」という意味になります。

Ballは宇宙船と違って、画面にずっと表示されない(画面の端にきたら消す)ので、「クローンをつくる」ブロックを使います。

それと、この「クローンをつくる」は、他のプログラムでも使いますので、覚えておいて下さい。

宇宙船のプログラムはこれで終わりです。

 

4.「弾」のプログラム

この状態で実行しても、Ballが増えるだけで、弾っぽくありません。

で、次に、Ballのプログラムを作ります。

f:id:mywayhaojisan:20170506102615p:plain

作ったら、緑のはたをクリックして、動かしてみましょう。

弾がレーザーのようにいっぱい出ますね。

これでは、ゲームとしてのむずかしさがないので、面白くありません。

で、下のように修正します。

f:id:mywayhaojisan:20170506102647p:plain

「もしタイマー>0.5なら」と「タイマーリセット」を追加しました。

これで、緑のはたをクリックして動かしてみて下さい。

このタイマーのブロックは、0.5秒に1回しか弾を発射できないようにしています。

 

今回はここまでです。


作ったら、必ず、「ほぞん」をするように心がけて下さい。作ったものが消えるともったいないので。

それと、今回も動画がありますので、よければ、参考にしていただければと思います。

youtu.be


今回、初登場したブロックについて、簡単ですが説明します。

f:id:mywayhaojisan:20170506102836p:plain

このブロックは、「スプライトのコピーをつくる」というブロックです。 今回の弾のように、いくつ表示するかわからない場合に利用します。

ちなみに敵のタコもこのブロックを利用して表示します。

f:id:mywayhaojisan:20170506102901p:plain

このブロックは、クローンされた(コピーが作られた)ときに実行されるブロックです。上の「...のクローンをつくる」ブロックを実行した時に呼ばれるブロックです。

コピーされたスプライトのプログラムはこのブロックを使います。

それと、このブロックを使った場合、最後には、必ず「このクローンをさくじょする」をつけて下さい。

そうでないと、コピーしたスプライトが画面にずっと残ってしまいます。

f:id:mywayhaojisan:20170506103214p:plain

このブロックは、クローンされた(コピーが作られた)スプライトを消すブロックです。 上の「クローンされたとき」ブロックと一緒に使って下さい。

f:id:mywayhaojisan:20170506103232p:plain

このブロックは、スプライトの位置を他のスプライトと同じ場所に移動させるブロックです。

今回の場合、宇宙船を移動させた場合、その位置がわからないので、このブロックで、弾の発射位置を決めています。

(変数を使えばわかりますが、むづかしくなるのでこのブロックを利用しています。)

f:id:mywayhaojisan:20170506103423p:plain

このブロックは、緑のはたがクリックされてから、何秒経過したかが入っている変数です。

注意する点として、この変数の値は、どのスプライトで使っても同じ値になります。
弾以外で、このタイマーを使ってしまうと、想定外の動作をしてしまう可能性があります。

(きちんと制御すれば問題ないのですが、今回は、ここでしか利用しないので、直接利用しています)

f:id:mywayhaojisan:20170506103520p:plain

このブロックは、上の「タイマー」を「0」にするブロックです。

 

ブロックの説明は以上です。

読んだだけでは、よくわからないと思うので、実際に作ってみて、動かしてください。 また、いろいろ変えて、遊んでみてください。

 

最後まで読んで頂いてありがとうございます。

皆さんに少しでもお役に立てれば幸いです。

<<シューティング(1回目) シューティング(3回目)>>