前回までのあらすじ
もう完成でもいいかもしれないと思いつつ、さらに色々と機能を追加してたいと思う今日このごろ。
ゲーム開始時のカプセル発射を止める。
今のままだと、ゲームスタート直後にカプセル発射するので、スペースキーが押される(ゲームスタートのメッセージが渡される)まで、攻撃や敵のスプライトも止めておきます。
押した回数で調整をする
「発射回数」のような変数を作っておいて、押した回数>0なら
初期化(オープニング画面)で発射回数変数は「-1」としておきます。
「攻撃がクローンされた時」に「発射回数」変数を1ずつ変える
攻撃がクローンされた時に「発射回数」を1ずつ変えます。
もし発射回数>0なら「攻撃(カプセル)が動く」とすれば、初回のスペースキーを押した時点では-1なのでカプセルは発射されず、2回目以降で攻撃が発射されるということになります。
完成
これで、「最初のスペースキー」を押した時は「発射回数は-1」になっているので、攻撃は発射されません!
ついでに、ゲームオーバーの時に|■を押さなくても「オープニング」に戻れるようにしてみます。
「|■が押された時」に気をつける。
ゲームオーバーの時に「ゲームスタート変数」を作ってもいいかと思いましたが、「|■が押された時」に色々入っていると、ゲームオーバーから変数を変えたりしてもこれらが動き出さないので、謎の挙動が発生する可能性があります。
「ゲームオーバーからスペースキーを押した時」に最初の画面に戻る、という場合は、「スクリプトはずっと実行中になっている」という点に注意する必要があるかと思います。
もし「スペースキーを押したら画面(スプライト)を消すだけ」のようになっていると、謎の動きになってしまいます。
「ゲームオーバー」→「ゲームスタート」の際に、「|■が押された時」に初期化の処理が入っていると、初期化されずにゲームが始まってしまいますので、「|■が押された時」でも「ゲームオーバー」のときでも、「ゲームスタート」の初期化される値を受け取って動き出すように、切り分けてみます。
「ゲームスタート」を送る
例えば、ゲームオーバーの時に「このスプライトを押した」→ゲームスタートを送る。として
オープニングの際も「|■が押された時」には「ゲームスタート」を送る、だけにして、ゲームスタートを受け取った時に●●~としてみます。
「このスプライトが押された時」に「ゲームスタートを送る」として、一斉に初期化してあげることで、「|■を押した」時と同じ動きを再現することができます!
完成版はこちら
※音量をオンにしていると音が鳴るので注意
※ゲームオーバー→ゲームスタートの時の動きが・・・なんだかおかしい?ので、次回以降で調整してみます。