URLをコピーしました!
スキルアップを始める!

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

Scratch(スクラッチ)
\ワードプレスのスキルアップはこちら!/ WordPress入門読本

前回までのあらすじ

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

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

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

押した回数で調整をする

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

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

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

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

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

完成

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

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

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

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

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

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

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

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

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

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

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

完成版はこちら

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

Kindle Unlimited 会員は無料で購読できます
購読はこちら
Kindle Unlimited 会員は無料で購読できます
購読はこちら