この記事のポイント
ボスを登場させる方法を説明します。
この記事で学べるスクラッチテクニック
スクリプトの止め方を学ぶことができます。
はじめに ボスキャラを登場させたい!
シューティングゲームでたくさんの敵を倒すのも楽しいですが、強力なボスキャラとの白熱したバトルも楽しみたいですよね。
今回の記事では、通常の敵キャラとは違う「ボスキャラ」を登場させる方法を解説していきます。
参考記事
前回の記事
前回の記事では、スコアとライフポイントを追加して、ゲームクリア・ゲームオーバーの要素を追加しました。今回の記事は前回の記事までで作ったプログラムを元にすすめていきますので、参考にしてください。
![](https://oyako-programming.com/wp-content/uploads/2023/05/shooting_5.png)
シューティングゲームを作ろうシリーズ 第1回
シューティングゲームを作ろうシリーズを最初から始めたい方は以下の記事からスタートしてください。
![](https://oyako-programming.com/wp-content/uploads/2023/05/shooting_1a.png)
スクラッチの始め方
スクラッチをイチから始めたい方は以下の記事を参考にしてください。
![](https://oyako-programming.com/wp-content/uploads/2023/01/scratch_start_method.png)
完成作品
完成作品は以下のようになります。緑色の旗:実行ボタンを押して遊んでみてください。
操作方法
- 矢印キーでろぼてくを操作する
- スペースキーで弾を発射
ルール
- 敵キャラを10体倒すとボスが登場します。
完成プログラム
新規追加スプライト
<ボスキャラ>
新規にボスキャラを追加します。今回はボスキャラが登場するところまでのプログラムを作ります。
![](https://oyako-programming.com/wp-content/uploads/2023/05/image-142.png)
修正スプライト
<敵キャラ>
ボスキャラが登場したら敵キャラは出現しないように、以下を追加します。
![](https://oyako-programming.com/wp-content/uploads/2023/05/image-133.png)
<ゲームクリア>
ゲームクリア条件を「敵キャラを10体倒したら」から変更します。
![](https://oyako-programming.com/wp-content/uploads/2023/05/image-134.png)
![](https://oyako-programming.com/wp-content/uploads/2023/01/robotech_yoyuu.png)
敵キャラを10体倒したら、ボスキャラが登場するように変更するので、10体倒してもゲームクリアしないように変更します。
スクラッチプロジェクト
スクラッチプロジェクトは以下です。プログラムや画像の素材は自由に使用してもらってOKです。
作りたいモノ・コト(仕様)を考える
今回の作りたいモノ・コトは以下のとおりです。これをプログラムできればゴールです。
- 敵キャラを10体倒すと、ボスキャラが出現する。
- ボスキャラが出現すると、敵キャラが出現しなくなる。
事前準備
ボスキャラのスプライトを用意
今回用意するスプライトは「ボスキャラ」という名前にしましょう。スクラッチにもともと用意されている「Tera」を使います。ボスキャラも皆さんのお好きなものを使ってもらってOKです。
今回も左右反転して使います。
さらにボスキャラなので、存在感を出すためにも大きさは「150」にしておきます。
![](https://oyako-programming.com/wp-content/uploads/2023/05/image-135.png)
![](https://oyako-programming.com/wp-content/uploads/2023/05/image-135.png)
プログラミング
ゲームクリアの条件を変える
まずは前回からゲームクリアの条件を変えておきます。敵キャラ10体を倒したら(=スコアが10になったら)ゲームクリアになっていましたが、今回は敵キャラ10体を倒したらボスキャラが出るようにしたいので、ゲームがクリアされると困ります。
よって、ゲームクリアの条件をとりあえずスコアが20になったらゲームクリアに変更しておきます。
![](https://oyako-programming.com/wp-content/uploads/2023/05/image-134.png)
![](https://oyako-programming.com/wp-content/uploads/2023/05/image-134.png)
ボスキャラの初期化
ゲームが始まった最初は、ボスキャラは登場しません。従って、隠しておきます。
また、ボスキャラは画面右端から登場するようにさせたいので、始めの位置を画面の右端に設定しておきます。
以下のとおりにプログラムを組みます。
![](https://oyako-programming.com/wp-content/uploads/2023/05/image-136.png)
![](https://oyako-programming.com/wp-content/uploads/2023/05/image-136.png)
ボスキャラを登場させる 失敗例
まずはボスキャラを登場させるためのプログラムの失敗例を作ってみたいと思います。
次のような動きをさせることを考えてみます。
- 敵キャラを10体倒したら、
- ボスキャラを画面右端に表示させて、
- ボスキャラが左に100進めて止める。
これを以下のようにプログラムを組んでみましょう。
![](https://oyako-programming.com/wp-content/uploads/2023/05/image-138.png)
![](https://oyako-programming.com/wp-content/uploads/2023/05/image-138.png)
これで一旦動かしてみましょう。すると、ボスキャラが出現して、画面左端まで消えてしまいました。
![](https://oyako-programming.com/wp-content/uploads/2023/05/shooting_6b.gif)
![](https://oyako-programming.com/wp-content/uploads/2023/05/shooting_6b.gif)
ボスキャラが止まってくれない理由
ボスキャラが止まってくれない理由は、「もしスコア>9なら」の条件がずっと成立してしまって、常に「ボス登場を送る」が動いてしまっているからです。
![](https://oyako-programming.com/wp-content/uploads/2023/05/image-139.png)
![](https://oyako-programming.com/wp-content/uploads/2023/05/image-139.png)
従って、一回メッセージを送ったら、このスクリプトを止めてやる必要があります。
ボスを登場させる 成功パターン 「このスクリプトを止める」を使う
先ほど考えたこと実現するためには、メッセージを送った後に「このスクリプトを止める」を使うと、上手く1回だけメッセージ送信をすることができます。
ここで重要なことは止まるスクリプトの範囲です。「このスクリプトを止める」ブロックで止まる範囲は、このブロックを含むかたまりの範囲です。以下のプログラムでは青色で囲った枠のスクリプトが止まります。
![](https://oyako-programming.com/wp-content/uploads/2023/05/image-140.png)
![](https://oyako-programming.com/wp-content/uploads/2023/05/image-140.png)
![](https://oyako-programming.com/wp-content/uploads/2023/02/robotech_thinking-1.png)
![](https://oyako-programming.com/wp-content/uploads/2023/02/robotech_thinking-1.png)
![](https://oyako-programming.com/wp-content/uploads/2023/02/robotech_thinking-1.png)
青色の枠のスクリプトが止まっても、ボスキャラを動かすためのスクリプトは動くことがわかりますね。
これで一旦動作を確認してみましょう。うまい具合にボスキャラが止まってほしい位置で止まるようになりましたね。
![](https://oyako-programming.com/wp-content/uploads/2023/05/shooting_6a.gif)
![](https://oyako-programming.com/wp-content/uploads/2023/05/shooting_6a.gif)
敵キャラの出現を止める
さいごにボスキャラが出現したら、他の敵キャラが出現しなくなるようにしましょう。
これを実現するためには、
- ボス登場のメッセージを受け取ったら
- 敵キャラのスクリプトをすべて止める
ことができればよさそうです。
このときに使うブロックが、「スプライトの他のスクリプトを止める」ブロックです。
以下のスクリプトを「敵キャラ」に追加してください。
![](https://oyako-programming.com/wp-content/uploads/2023/05/image-141.png)
![](https://oyako-programming.com/wp-content/uploads/2023/05/image-141.png)
![](https://oyako-programming.com/wp-content/uploads/2023/01/robotech_normal-1.png)
![](https://oyako-programming.com/wp-content/uploads/2023/01/robotech_normal-1.png)
![](https://oyako-programming.com/wp-content/uploads/2023/01/robotech_normal-1.png)
これで今回のプログラミングは完了です!
お疲れさまでした!
動作確認
ここで一旦動作確認をしてみましょう。敵キャラを10体倒してボスキャラが画面右端から出てくると、それまでいた敵キャラが消えましたね。
![](https://oyako-programming.com/wp-content/uploads/2023/05/shooting_6c.gif)
![](https://oyako-programming.com/wp-content/uploads/2023/05/shooting_6c.gif)
【少し発展】「このスクリプトを止める」ブロックを使わない方法
スクラッチにある「このスクリプトを止める」ブロックは便利なブロックですが、現実のプログラミングではこのような便利なブロックは存在しなかったりします。
ここでは少し発展させて、「このスクリプトを止める」を使わずに同じ動きをするプログラムを書いてみます。
メッセージを1度も送信していないことを条件に入れる (フラグの考え方)
メッセージを1度しか送らないようにするには、1度送ったらスクリプトを止める方法の他に、
メッセージを1度も送ってない場合だけ、メッセージを送るという方法
も考えることができます。
以下のように考えます。
- 最初に「ボス登場_送信回数」変数を作って0を設定する。
- 「ボス登場_送信回数」 ⁼ 0(1度も送信していない)かつスコアが10以上なら、
- 「ボス登場」を送る。
- その後、「ボス登場_送信回数」を1に増やす。
![](https://oyako-programming.com/wp-content/uploads/2023/05/image-144.png)
![](https://oyako-programming.com/wp-content/uploads/2023/05/image-144.png)
このようにすることで、1度「ボス登場」を送って、「ボス登場_送信回数」が1増えると、もう1度「スコア>9」となっても、「ボス登場_送信回数」が0ではないので、「ボス登場」を送られることはありません。
![](https://oyako-programming.com/wp-content/uploads/2023/02/robotech_cheer.png)
![](https://oyako-programming.com/wp-content/uploads/2023/02/robotech_cheer.png)
![](https://oyako-programming.com/wp-content/uploads/2023/02/robotech_cheer.png)
これをプログラミングでは「フラグ処理」と言ったりします。とてもよく使う手法なので覚えておくと役に立つときがくるかもしれません。
さいごに
今回の記事では、ボスキャラを登場させるプログラムを作りました。
スクラッチのテクニックとしては、スプライトの止め方を学ぶことができました。
シューティングも残りあとわずかで完成です。がんばっていきましょう!
次回
次回は、ボスキャラと戦えるようにプログラムを作ります。ぜひ挑戦してください!
![](https://oyako-programming.com/wp-content/uploads/2023/05/shooting_7.png)
![](https://oyako-programming.com/wp-content/uploads/2023/05/shooting_7.png)
コメント