ジオメトリーダッシュの作り方④ テレポートバグ

ジオメトリーダッシュの作り方④ テレポートバグ
グリフパッチ(動画)
ok-scratch(解説)

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

壁にぶつかった時のテレポートバグを直して、さらに物理演算ツヨツヨなジオメトリーダッシュにするぞ!
スターター
プロジェクト
リミックス用プロジェクトへ
難しさ

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

LOADING...

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

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

前回は埋もれ修正を整えたけど、そういえば天井に埋もれた場合はどうなるんだろうか。そこらへんを見ていこう。あと、壁に横からあたった場合にはテレポートしてしまう現象が放置したままだから合わせて直す。

今回のゴール

壁にぶつかったらしっかりゲームオーバーになるようにしていくぞ。

  • 天井に当たっても埋もれない
  • 埋もれ処理をさらに洗練する
  • 壁にあたったらゲームオーバー

天井処理を作る

いま天井に触れるとどうなるかチェックしておこう。

スプライト「コース」を開く。

ブロックを、Shiftキーを押しながら選択して上に持ち上げよう。

ジャンプして天井に当たる挙動をチェック

うわ、なんか一瞬でブロックの上方までぶっとんだ(笑)

これは埋もれ修正の処理のせい。埋もれが解消されるまでY座標をプラス1してるから、下から当たるとぶっとんだように見える。

まぁこの動き面白いけど、今回はジオメトリーダッシュと同じ仕様にしたいからちゃんと直そうか。

埋もれ修正処理を改良する

スプライト「プレイヤー」を開く。

「もし白に触れたら」という条件分岐ブロックの中に、もう一つ「もし〜なら、でなければ〜」ブロックを置こう。

条件式でスピードYの値を確認して、上昇中かどうかを調べる。上昇中ではないなら、いままでの処理を実行する。

「でなければ」の方で、上昇中の処理を作っていく。

引数を追加する

定義「_埋もれを修正する」を右クリックして引数を追加しよう。「方向」という名前にしておいて。

スクショを見て「方向」適用しよう!

  • 上昇中でなければ、今までどおりY座標にプラス1する
  • 上昇中なら、Y座標にマイナス1する

天井に対する埋もれ修正が効いてるかテストする

頭ゴンゴンってなってる!痛そうだけど成功(笑)

ゲームオーバーを改善する

スプライト「コース」を開いて。

ブロックを地面に戻しておこう。

テレポートバグを直す

まだ壁に横からぶつかった時のテレポートバグが残ってるんだよね。

スプライト「プレイヤー」を開く。

埋もれを修正する定義を、ごっそり切り離してしまってほしい。ほぼ作り直す!

埋もれ修正ロジックの仕組みを理解する

ちょっと複雑だから図解していく。

テレポート原因と対策

テレポートしてしまう原因は「白に触れなくなるまで(ずっと)」Y座標を変えているからだよね。

じゃあさ、1回だけY座標を変えてみたらどうかな。

これなら壁に関してはテレポートしなくなるよね。でもなんか色々バグが起きそう。

とくに今までになかったこんなバグが起きる。

地面の白線が少しでもズレてたらゲームオーバーになるというストレスな状況が発生してしまう。これは開発者にとってもデリケートなコスチューム制作が求められるようになり、正直しんどい。

4回繰り返したらどうだろう

1回だけじゃなくて複数回繰り返せば解決するかもね。

ためしに4回Y座標を変えるようにしてみる。

うん、ゲームオーバーが正解だからこれでも壁に関しては大丈夫だし、さっきの白線がズレてたらゲームオーバーという問題も解決しそう。

あー、でも待って。まだ新しく考えなきゃいけないことがある。

ジャンプ中の衝突判定が甘くなる

例えばジャンプしたのに、ちょこっとだけ高さが足りずにブロックに登りきれなかったケースを考えてみよう。ジオメトリーダッシュだとよくあるケースだよね。

おっとぉ、今のロジックだとジャンプが足りなくても4座標分ならオマケでクリアできちゃうね。これはこれでイージーモードって感じで面白い。けどとりあえず直す。

ダブルチェックしてみる

いったんY座標を上に4回上げたけど、そのあとしっかり8回下げてみて埋もれるか試してみたらどうかな。

お、しっかりゲームオーバーになったね。これでいいのかな。もう少し考察を進めてみよう。

じゃあ下降中はどうなるだろうか。

下降中は逆にいったん下に4座標下げてから、上に8座標上げるダブルチェックをしてみようか。

うん、下降中はこれで問題ないね!

ならこのダブルチェック方式で解決なのかな。

いや、実はこれだとまだバグってる現象がある。

深い埋もれが解決できなくなってる

さっきまでは「埋もれが解消するまでずっと」Y座標に変更を加えていたけど、それはやめていく方向だよね。そうすると深い埋もれが解消できずに、こんな↓バグが起きる。

あちゃー、けっこう良さそうだったけど、振り出しに戻った感じだね。

でも大丈夫。深い埋もれにも対応する方法がある。

ここで使えるのは変数「スピードY」の値だ。厳密に言うとスピードYの絶対値だ。

これを使えばこうなる↓

そう、埋もれ判定の際にスピードYの値も考慮してチェックを行えば、カッチリ埋もれた分だけY座標を動かすことができる。さらに「白線がちょっとでもズレてたらアウト」という厳しいルールを避けるために4座標分のゆとりも設ければ、だいたいの埋もれには対応できるはずだ。

これを実装したらどうなるか、一緒にやってみよう。

埋もれ修正を改善する

このスクショ↓を見てガッツリ作り直してほしい。

ok-scratch ok-scratch

最後にもう一回4座標ずらしているのは、(計算前の)元の位置に戻すためだよ。

条件式のところには、もともと使ってた「白から離れるまで」を入れよう。

埋もれ修正がどうなったかテスト

落ちた(笑)

まぁOK!どうせここでゲームオーバーにするから関係ない。

ゲームオーバーをイベント化する

ゲームオーバーを改修するぞ。

メッセージ「ゲームオーバー」を作る

これを最後に付けよう。

あと緑の旗が押された時の処理にも改修を加える。

この位置で切り離して。

そしてゲームオーバーを送るブロックと、ゲームオーバーのハットブロックを設置しよう。

壁にぶつかってみる

長い人生、ときにはわざと壁にぶつかることも必要やで(なんのこと?)

うん、9割OK!でも最後の瞬間に1座標だけ余計に壁にめり込んでるの分かる?

これを直す。

ここの順番変えるだけで直るよ。

ok-scratch ok-scratch

「なんでこれで直るか、自分なりに考えてみてくれ」とグリフパッチさんが問いかけているよ。考えてみてね〜。

あと、白線をわざとずらしたバージョンもテストしておいたから、このショート動画もチェックしてみて。

うん、ちょっとくらいのズレなら問題なくゲームが続くね!よきよき。

まとめ

ここまでできたら、色んなブロックやスパイクを設置してちょっとしたジオメトリーダッシュを作ることも可能だ!

ブロックを2個、3個、4個と積み重ねた柱を3本並べてステレオマッドネスで特徴的な地形を作ることも可能だぞ!

いろいろやってみてね。

  • チュートリアルの続きが読みたい人へのお願い チュートリアルの続きが読みたい人へのお願い

    このチュートリアルの続きを読みたい人は 見本の作品のハートをクリックして 教えてね!もし要望がそこそこあれば続きも執筆します。みんなの読みたいチュートリアルに力を入れたいのでアンケートみたいなもんです(^o^) よろしく!

あとはリクエスト次第で続きも書いていくね!読みたい人は是非教えてね〜。

グリフパッチさんのジオメトリーダッシュはこちら

完成サンプルがあるよ
おつかれさま!今回のチュートリアルには完成サンプルがあるから、作ってて分からなくなったり、 動作確認をしたいときはチェックしてみてね。
このスクラッチゲームの作り方への質問もOK このスクラッチゲームの作り方への質問もOK
このスクラッチゲームの作り方に挑戦していて分からないことが発生したら質問してみてね。気づいたタイミングで回答するよ。 質問は 僕のスクラッチのプロフィール で受け付けているよ。

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

・◯◯ ... 記事のどこまで実装が終わったのかを記入しよう。
・□□ ... どんな問題が起きているのか、どういうときに起きるのか、具体的に書こう。
・共有済みURL ... たまに共有してない作品URLを書いてる人がいるけど、共有しないとこちらから確認できないからよろしくね。
ブクマよろしくお願いします! ブクマよろしくお願いします!
どんどん追記・更新していくので、ブックマークやシェアよろしくお願いします!

スクラッチゲーム攻略

スクラッチゲーム

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