スクラッチでマリオ#15 バグるパタパタ②

スクラッチでマリオ#15 バグるパタパタ②
じゅうぞう
パタパタカエルの向きを直します。進行方向と違う向きだったりしてるので、パッと見で変w
チャレンジ度

前回に続いてパタパタみたいにジャンプして迫りくるカエルを作っていきます。

完成サンプルはこちら↓

ブロックに当たったらジャンプを中止する

現在、ブロックに横から当たると次のようになってしまいます。

めり込んで壁抜けしちゃうのです😅

直していきましょう!

ブロック定義「方向転換する」を再利用する

気合を入れましたがサクッと直ります。

テストする

反対方向に進むことでブロックにめり込むバグが修正されました。ホッ。

壁にあたったら反対方向に進む

今度は壁です。

壁の寸前にカエルがスポーンするように調整しておくとテストが楽です。

僕の環境ではシーン1の右から400くらい。

現状だとこうなります↓

ブロック定義「方向転換する」を改修する

ジャンプ中にぶつかるとバグるので、ジャンプ中に処理を追加します。そのため滞空時間を判定条件に使います。

逆方向に進む

ジャンプ中に壁にあたったら、反対方向に進むようにブロックを追加します。

またマジックナンバーが増えてしまいました……。この5はどのくらい反対方向に進めるかを表しています。みんなのゲームに合わせて微調整してください。

> 反対方向に進むには「0ー進行方向」にしなくてもいいの?……直前で進行方向を逆向きにしているので、ここではそのままで大丈夫です。

テストする

プイッと反対向きに進みましたね。これで壁も良さそうです。

向きを補正する

ちょっといじわるなテストをしてみました。(テスト用にカエルのジャンプ間隔をかなり早い0.1にしてあります)

1回目の壁は意図したとおりですが、2回目以降も壁に当たり続けると、カエルの向きがおかしくなってきます。これは好ましくないですね。直しましょう!

ブロック定義「向きを補正する」を作る

条件式を追加する

次のような条件を作ってください。

ちょっと不思議ですね。

  • 解説しますという口コミを寄せてくれた方 解説します

    コレの意味は「向きが間違ってるとき」になります。なぜそうなるのかも解説します。

    このプロジェクトでは、今のところ敵の向きはー90度(左向き)か90度(右向き)のどちらかです。

    進行方向も−1(左向き)か1(右向き)のどちらかです。

    つまり向きのパターンは次のとおりしかありません。

    - 進行方向が−1なら、向きは−90度

    - 進行方向が1なら、向きは90度

    このどちらかであれば「正しい向き」と言えます。

    しかし壁に当たることで方向転換し、当たり方によって変数の値が次のようになってしまうことがあるようです。

    - 進行方向が−1なのに、向きが90度

    - 進行方向が1なのに、向きがー90度

    この↑間違ったパターンを見てください。

    向きが間違っているときは必ず「向き×進行方向」の答えがマイナス90になるのです。

    (向きが正しいときは必ず「向き×進行方向」の答えがプラス90になります)

    これをコードにしたのが、スクショの条件式になります。

向きを補正する

条件式の中で向きを補正する処理を書きます。カンタンです。

次のような計算になっています。

  • (進行方向が−1なのに、向きが90度だから)本来の向きである「ー90度」に向ける
  • (進行方向が1なのに、向きがー90度だから)本来の向きである「90度」に向ける

反転させてるだけですね。

テストする

まだまだ改善の余地はありそうですが、ひとまず十分なクオリティだと思います。

まとめ

これでパタパタっぽいカエルは完成!新しい動きのある敵モブを追加することに成功しました😀

このコス(Frog)にはジャンプ中のコスもあるのでアニメーションを加えてみても面白いかもしれないですね。でも今度は新しい攻撃パターンかボスキャラみたいなのにも挑戦したいところ。やはりクッパかな。

ところで次回はバグ修正回です。ありますねぇ、まだまだたんまりバグが……😫

厳選されたスクラッチ人気作品リストがレビュー付きで楽しめます
世界中のヒットゲームをスクラッチで遊ぼう
趣味に関するスクラッチ作品例
勉強になるスクラッチ作品