scratch 大乱闘スマッシュブラザーズ風ゲーム パート2
名古屋市瑞穂区で子供を対象としたプログラミングサークルを開いているサハラです!
パート1の続きを書きます。
3.Wizardを動かすコードを作ろう
Wizardのコードも作っていきましょう。
1.キャラクターを移動させよう
WizardはMPを10消費するとキーボードの1で瞬間移動できる能力を持たせます。
まずMPを作りましょう。ゲーム開始時に初期値として100、0.5秒毎にMPが1増えるようにします。Wizardのコードの「旗がクリックされたとき」に変数MPのブロックを追加してください。
1秒毎にMPが1増えるコードは下記です。
キーボードの1で移動するコードは下記です。WizardのMPが20以上のときの判定ブロックは、以上を表すブロックがないので19より多い時の判定ブロックを作成します。
移動のx座標は-250から250までランダムで移動できるようにします。y座標は変わらないように「y座標」ブロックを入れておきます。
移動したときに回転しないように、「回転方向を左右のみにする」を設定しましょう。
これでWizardがWを押すたびに瞬間移動します。MPが尽きないように気をつけてください。
2.キャラクターを攻撃させよう
WizardはMPを2消費するとキーボードの2で蝙蝠(Bat)を召喚するできるようにします。Batは生成されるとbatterの方に向かい、batterはBatが当たるとHPが10減ります。
まずはスプライトにBatを追加してください。大きさは適度な大きさに調整して、ゲーム開始時には表示しないように表示しない設定に変更してください。
Wizardのコードに戻ります。2が押されたときにBatのクローンを作るコードを書きましょう。クローンを作ることで、同じコードで動くBatを簡単に生産できるようになります。
Batのコードに移ります。クローンされたときに画面上のランダムの位置で表示して、5秒でバッターの方向に向かって移動するコードを書きます。
次にBatterにダメージを与えるコードを書きます。BatterがBatに接触したらBatterのHPを10減らすようにしましょう。
まずBatterのHPを設定しましょう。Batterのコードに下記を書きましょう。
次にBatがBatterに攻撃をするコードを書きましょう。Batのコードに下記を追加してください。「を送って待つ」にしないと、BatとBatter接触している間ダメージを与え続けるので、メッセージを受けたBatterの処理が終わるまで待つブロックを使用します。
バッターの服に使われている色に触れたらダメージを与えるように、コスチュームに使用されているバット以外の色を条件に含めます。
メッセージ名には「Batterへダメージ」と書いてください。
最後にBatterがメッセージを受け取って、ダメージを受けるコードを書きます。
batter-bを複製して、紫のダメージを受けたようなコスチュームを作成しました。
せっかくバットがあるので、Batを打ち返せるようにもしましょう。Batのコードに追加してください。最後にクローンを削除するのを忘れないでください。
バットがBatを打ち返すんですよ。なんてシャレの効いたゲームなんでしょう。
Batがバットに打たれたとき、色が変わるようにコスチュームを用意しましょう。
Batterはやられっぱなしでは面白くない。打ち返したBatがWizardに当たったらダメージを与えるようにしましょう。といっても特にコードを変更する必要はありません。
この変更により、打ち返したBatだけでなく、Wizardの攻撃によって出現したBatにWizardが当たってもダメージを受けることになりましたが、これは仕様とします!
4.遊んでみよう
2019/1/2にスクラッチ3.0が公開されたら、プロジェクトをサーバにアップロードする予定です。
5.今後
まだまだ大乱闘スマッシュブラザーズ感がないので、キャラクター増やしたり、アイテム拾えるようにしたりしたいですが、とりあえずパート1,2はここまでです。
プログラミングサークルについて
CoderDojo瑞穂という団体名でプログラミングのボランティアサークルをやっています。scratch(スクラッチ)やプログラミングの体験ができる他、Viscuit、テキストプログラミングも体験ができます。非営利団体のため、特に参加料を徴収しておりません。
月2回開催しているので、良かったら遊びに来てください!! 申し込み等、詳細は下記からご確認ください。
Dojoの写真やニンジャのビスケット作品を上げてます。
インスタの写真+
https://www.facebook.com/CoderDojo%E7%91%9E%E7%A9%82-296874087614515/