敵(エネミー)を倒す|スクラッチでアスレチックゲームの作り方⑳

敵(エネミー)を倒す|スクラッチでアスレチックゲームの作り方⑳
グリフパッチ(動画)
ok-scratch(解説)

和訳解説は動画作者のグリフパッチさんご本人から許可をいただいて掲載しております。
チャンネルはYOUTUBE ( by griffpatch )からどうぞ。

敵をふんづけて倒すというのは任天堂のマリオが生み出した画期的なアイデアと言われている。1つの時代を作り上げたと言っても過言ではないマリオの一部を僕らのアスレにも実装してみよう。
スターター
プロジェクト
リミックス用プロジェクトへ
難しさ

任意)自分の作業中のスクラッチ作品URLを記録しておこう!再開するときに便利だよ。

LOADING...

※ この記録は今使ってるPCに保存されます。別のPCで作業するときは表示されません。

スクラッチに挑戦している皆さん、どうも!スクラッチコーチです。

このスクラッチゲームの作り方への質問もOK このスクラッチゲームの作り方への質問もOK
このスクラッチゲームの作り方に挑戦していて分からないことが発生したら質問してみてね。気づいたタイミングで回答するよ。 質問は 僕のスクラッチのプロフィール で受け付けているよ。

質問テンプレート(素早く3回クリックすると全選択できるのでコピーしよう)

・◯◯ ... 記事のどこまで実装が終わったのかを記入しよう。
・□□ ... どんな問題が起きているのか、どういうときに起きるのか、具体的に書こう。
・共有済みURL ... たまに共有してない作品URLを書いてる人がいるけど、共有しないとこちらから確認できないからよろしくね。

プレイヤーがんづけたら敵を倒せる、っていう動きは今や常識だけど、この挙動を常識になるまで世に広めたのはスーパーマリオの実績の1つだと言われている。踏んだら倒せる、ってよく考えたら奇抜だもんね。常識って怖いぜ。

今回の目標

  • エネミーを踏んづけたら倒せるようにする
  • その際にプレイヤーがバウンドするようにする
  • 演出もしっかり考える
  • 倒した敵は2度と現れないようにする
  • 敵のスポーン位置によっては、シーン切り替え時に位置を変更する

エネミーを倒せるようにする

プレイヤーに触れた際に、プレイヤーのスピードYの値を調べよう。マイナス3未満なら下降中にエネミーに触れた、すなわち踏んづけたと判定しよう。

音を鳴らす

倒した時に音が鳴るようにしたいから、Squishスクイッシュ Popポップを追加しよう。

音が鳴るようにしてみよう。

レッドダウンにして倒す

つぶされたコスにして、クローンを削除しよう。その際に演出を加えて倒した感を出すぞ。

(↑枠外だけどスピードYの判定がプラス3になってるけど、マイナス3が正しい)

エネミーを倒せるようになったかテストする

よし!これで最強の敵はザコキャラへと堕ちた。

プレイヤーがバウンドするようにする

エネミーを踏んづけたらプレイヤーがバウンドするようにする。

メッセージが送られるようにする。

スプライト「プレイヤー」でメッセージを受け取る

受け取ったらスピードYを10にして軽くバウンドさせよう。

エネミーを踏んづけたらプレイヤーが跳ねるかテストする

ふっふー!これでますますエネミーを踏むのが楽しくなっちゃうね。このバウンドを利用しないと越えられないアスレがあっても楽しいかもしれない!うーん、細部にこだわると夢が広がるね!

アンフェアなスポーンを防ぐ

ところで、このエネミーのスポーン場所を見るとかなり画面の端だよね。そうするとシーン切り替えで戻ってきた時に、ちょっとゲームバランスが崩れる現象が起きる。

これはアンフェア、つまり不公平なので修正したい。

ok-scratch ok-scratch

ショート動画だと都合よく倒してしまっているけど、実際はプレイヤーがダメージを受けることもある。

アンフェアじゃないにしても、プレイヤーがシーンのどこから入ってくるかによってエネミーの配置を変える方法を実装しておけば、いろいろなアイデアが生まれる余地ができるので、やってみよう。

定義「_スポーンする」を作る

引数が多いから注意して作ってね。

シーンを切り替えるところの処理をごっそり移動して、元の場所では定義の実行ブロックをおこう。

ok-scratch ok-scratch

いまはレッドしかエネミーがいないからコスはとくに指定してない。だから引数「タイプ」は使ってないけど、エネミーを増やすならタイプが必要になるから用意だけしておこう。

プレイヤーのX座標によってスポーン位置を変える

今回はとりあえずXにだけ対応すればいい。Yに対応する時も考え方は同じだよ。

シーンに入ってくる位置によってエネミーのスポーン位置が変わるかテストする

よしよし、いいかんじ。

安全エリアを作る

ところで、エネミーには重力処理がコーディングしてあるから、坂道の上から下に移動してきたり、ゆるやかな坂道なら登ってきたりするのが現状だよね。

↓こんな

でもマリオとかでもそうだけど、エネミーによっては移動範囲を制限したい時がある。坂道は降りてほしくない、とかね。

これはゲームバランスをキープするためにも重要だよ。たとえばマリオで、待ってれば勝手にガケに落ちるクリボーがいたんだけど、これはこれで面白いけど開発者の本来の意図とは違うと思うんだよね、きっと。

そこで安全エリアみたいな、目には見えない壁を作って、エネミーはその壁を通り抜けられないようにしてみたい。座標で移動範囲を制限する方法もあるけど

ok-scratch ok-scratch

座標で移動範囲を制限する方法もあるけど、あとから振り返った時に分かりにくいんだよね。「このX座標56ってどこのことだ?」ってシーンのコスとか見直して座標を何らかの方法で確かめて「あ、ここね」と分かる、ってめんどうだぁ(涙)だからコスで見えない壁を用意する方が結局は楽だったりする。

スプライト「安全エリア」をつくる

障害物を複製しよう。

スプライト名は安全エリアにしておく。

コスはシンプルな長方形でいいよ。複雑な形にすれば複雑な移動制限も可能だよ。

いい感じの場所に設置しよう。ここでは障害物と同じように、中央のアンカーにピタッとくっつけるセンタリングにこだわる必要はない。コスを動かして都合の良い場所に移動しちゃおう。なお、座標はXもYもゼロの状態である必要はあるよ。

マグマのロジックなどがある場合は不要だから消しておこう。

スプライト「エネミー」を開く

エネミーがこの壁に触れたら反転するようにしようか。

定義「_左右に動く」に条件ブロックを追加しよう。

条件はスプライト「安全エリア」に触れてないこと。これで今まで通り反転されるようになった。

ギミックにも対応しておく

ついでにギミックに触れた時も反転するようにしておこうか。

「⚪︎または⚪︎」に「安全エリアに触れた」と「ギミックに触れた」を入れた演算ブロックを作る。それを「⚪︎ではない」にはめておこう。

↓こうなる。これでギミックでも反転するよ。

安全エリアで反転するかテストする

おっけー!これでエネミーの移動制限ができた。ギミックでも反転するから試してみて欲しい。

安全エリアを見えないようにする

隠すのではなくて幽霊効果を100にしよう。隠すと触れた判定が狂ってしまう。

一度やっつけたら復活させない

ここからは実は、後日グリフパッチさんがバグ修正的な感じで動画をアップしてくれた内容になるよ。タイミング的にここで紹介するのがいいかなと思ったので、今回やっちゃおう。

一応いまの状態を見ておこう。敵を倒してもシーンに戻ってみると復活してしまっているよ。

これを防ぐにはリストを使うと効率的。ちょうど重要アイテムの時と同じような考え方かな。

スプライト「エネミー」に処理を追加していくよ。

リスト「★やっつけたエネミー」を作る

セットアップする際に、このリストは初期化されるようにしておこう。

変数「ID」をつくる

定義「_スポーンする」でIDを使う

この定義の引数を組み合わせて個体ごとのIDとして使おうと思う。

ok-scratch ok-scratch

厳密な個体別IDを作りたい人は、この定義に引数「ID」を追加しよう。そうすればIDを手入力することで確実に個体ごとに違う値を割り当てられる。グリフパッチさんはそうしてる。

このIDに入れる値は↓こんなかんじで各引数を「⚪︎と⚪︎」でつなげていく。

これを変数にセットすれば、ゆるいけどだいたい個別IDが作れる。

そして条件ブロックで、リストにこのIDが含まれているか調べよう。含まれているならスポーン処理を中断する。

プレイヤーに踏まれたらIDをリストに追加する

一度倒したエネミーは復活しないかテストする

よし、テスト。ってアレ?復活してるのもいるけど、崖の上の敵は消えてるね!

シーンが切り替わったときに、戻ってくるときだけ場所を変えたエネミーがいたよね。その子は(X座標が違うから)IDが変わってしまうから↑のショート動画みたいに復活してしまうけど、まぁこのくらいならいいかなと思って放置した。

これを修正したい場合は、定義「_スポーンさせる」させるにIDという引数を1つ追加して、それを変数「ID」にセットするようにしてみよう。そうすれば位置が変わった同一個体のエネミーを排除できるよ。

まとめ

よおおおおし!エネミーの実装もほぼ完成!いまはレッドしかいないけど、十分やっかいな存在ができたね。

次回はギミックに大革命を追加する。人類が文明を加速させる原動力となった力、そう、回転だ!回転こそが我々の文明を支えていると言っても過言ではない、と思う!

すんごいハイレベルなアスレが作れそうじゃない?!ここまでいければ究極のアスレと豪語しても許される気がする!

当連載で取り上げるグリフパッチさんの動画はこちら

完成サンプルがあるよ
おつかれさま!今回のチュートリアルには完成サンプルがあるから、作ってて分からなくなったり、 動作確認をしたいときはチェックしてみてね。
ブクマよろしくお願いします! ブクマよろしくお願いします!
どんどん追記・更新していくので、ブックマークやシェアよろしくお願いします!

スクラッチゲーム攻略

スクラッチゲーム

    • 厳選されたスクラッチ人気作品リストがレビュー付きで楽しめます
      趣味に関するスクラッチ作品例
      勉強になるスクラッチ作品