エグウェブ.JP@オンライン/WEB講座・セミナー・WEB分析

WEB分析・ホームページ・WEBサイト作成・WordPress、Googleアナリティクス、LINEスタンプ、Photshop・illustrator、Excelの講座やオンラインセミナーを開催中!

【Scratch(スクラッチ)入門】#14オープニングでスペースキーを押した時にいきなり攻撃を発射しないように調整する

time 2020/04/30

前回までのあらすじ

もう完成でもいいかもしれないと思いつつ、さらに色々と機能を追加してたいと思う今日このごろ。

ゲーム開始時のカプセル発射を止める。

今のままだと、ゲームスタート直後にカプセル発射するので、スペースキーが押される(ゲームスタートのメッセージが渡される)まで、攻撃や敵のスプライトも止めておきます。

押した回数で調整をする

「発射回数」のような変数を作っておいて、押した回数>0なら

初期化(オープニング画面)で発射回数変数は「-1」としておきます。

「攻撃がクローンされた時」に「発射回数」変数を1ずつ変える

攻撃がクローンされた時に「発射回数」を1ずつ変えます。

もし発射回数>0なら「攻撃(カプセル)が動く」とすれば、初回のスペースキーを押した時点では-1なのでカプセルは発射されず、2回目以降で攻撃が発射されるということになります。

完成

これで、「最初のスペースキー」を押した時は「発射回数は-1」になっているので、攻撃は発射されません!

ついでに、ゲームオーバーの時に|■を押さなくても「オープニング」に戻れるようにしてみます。

「|■が押された時」に気をつける。

ゲームオーバーの時に「ゲームスタート変数」を作ってもいいかと思いましたが、「|■が押された時」に色々入っていると、ゲームオーバーから変数を変えたりしてもこれらが動き出さないので、謎の挙動が発生する可能性があります。

「ゲームオーバーからスペースキーを押した時」に最初の画面に戻る、という場合は、「スクリプトはずっと実行中になっている」という点に注意する必要があるかと思います。

もし「スペースキーを押したら画面(スプライト)を消すだけ」のようになっていると、謎の動きになってしまいます。

「ゲームオーバー」→「ゲームスタート」の際に、「|■が押された時」に初期化の処理が入っていると、初期化されずにゲームが始まってしまいますので、「|■が押された時」でも「ゲームオーバー」のときでも、「ゲームスタート」の初期化される値を受け取って動き出すように、切り分けてみます。

「ゲームスタート」を送る

例えば、ゲームオーバーの時に「このスプライトを押した」→ゲームスタートを送る。として

オープニングの際も「|■が押された時」には「ゲームスタート」を送る、だけにして、ゲームスタートを受け取った時に●●~としてみます。

「このスプライトが押された時」に「ゲームスタートを送る」として、一斉に初期化してあげることで、「|■を押した」時と同じ動きを再現することができます!

完成版はこちら

※音量をオンにしていると音が鳴るので注意
※ゲームオーバー→ゲームスタートの時の動きが・・・なんだかおかしい?ので、次回以降で調整してみます。

download(ダウンロード)

プロフィール

EGUWEB

EGUWEB

【皆さまの人生に最良のファーストステップを】WEBサイトを作りたい!WEB分析を学びたいけど分からない。とりあえず色々と知りたい!皆様の悩みを解決できるように頑張ります。 [詳細]

カテゴリー