壁につかまってスライドする|スクラッチでアスレチックゲームの作り方⑧

壁につかまってスライドする|スクラッチでアスレチックゲームの作り方⑧
グリフパッチ(動画)
ok-scratch(解説)

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

スターター
プロジェクト
リミックス用プロジェクトへ
難しさ

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

LOADING...

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

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

最近のアスレでは壁につかまってスライドする動きもメジャーになってきたよね。なんか見てるとツツ〜ってすべるのがたまらなく気持ちいいんだよなー。なんでだろ。ゼルダの伝説とかでも壁を登るのは常識だし、マリオでも壁につかまったりスライドしたりするのあるし、うん、やっぱり壁につかまる機能は絶対に作りたい!一緒に見てみよう!!

今回の目標

今回は壁につかまってスムーズに下降していくスライド処理を作るのが目的だ。

  • ジャンプ中(や落下中)に壁に当たったら、つかまって下方にスライドすることが出来るようにする
  • 壁に触れた状態で真上にジャンプ(垂直跳び)しても、壁スライドはできないようにする

あたらしいヒットボックスや変数を使うから注意深くみていこう。壁スライドを実装するときは、なれるまでこのチュートリアルを見直すのも効果的だよ。

スプライト「プレイヤー」に壁スライドを追加する

まずはプレイヤーに実装していくぞ。

ok-scratch ok-scratch

まんがいちステージに壁がない人も、あとで壁を作る過程があるから大丈夫、そのまま進めよう。

定義「_壁スライドできるか調べる」を作る

調べる系の定義を増やす。

定義「_衝突を判定するX」で実行する

変数「壁スライドできるか」を作る

この変数を使う前に条件ブロックを1つ置いておこう。落下値を見る条件ブロックだ。

落下値が2未満なら壁スライドできないと判定する。つまりジャンプして壁に当たったのではなく、単に走ってて壁に当たったりした場合は、ここで壁スライド出来るか調べる処理は終わり。

壁スライド用の判定ヒットボックスを使う

グリフパッチさんが壁スライドに役立つヒットボックスを用意してくれているので使おう。コスチューム名は「hitboxヒットボックス wallslideウォールスライド」だ。wallslideウォールスライドは壁スライドっていう意味だから、まさに専用ヒットボックスだね。

このさい、回転方法を左右のみにする。

そして定義「_ステージに触れているか調べる」を実行して、結果をそのまま変数「壁スライドできるか」に割り当てる。

最後にコスと回転方法を元に戻そう。

スプライト「ステージ」に壁を増やす

僕はシーン2の階段を全部タテに変えて壁にしたよ。いくつかは空中に浮かぶ壁にしておいた。ここでは垂直な壁を作っておこう。

変数「壁スライドできるか」の値が変わるかテストする

壁に触れながら下降するとゆっくりになる処理を作る

ステージを開いている人は、またプレイヤーを開こう。

定義「_上下の動きを処理する」を改修する

壁スライドできるときにスピードYの値を減らすことでゆっくり下降するモーションを作るよ。

↓ここに条件ブロックを置こう。

この中で再び壁スライドできるかを調べていく。

  • なんで条件ブロックの中で実行しているの? なんで条件ブロックの中で実行しているの?

    壁に触れた状態でタテにジャンプしたときは壁スライドを発生させないためだよ。

    さっき「_衝突を判定するX」で1度「_壁スライドが出来るか調べる」を実行したよね。だから走りジャンプして壁に当たったなら、この段階で変数「壁スライドできるか」には1以上が入っていることになる。

    だから走りジャンプのときだけ壁スライドが発生して、垂直跳びではスライドできないようにしているんだ。

    ジャンプの上昇中にはスライドさせないようにする

    今のままだと壁にジャンプした上昇中のときもスライドが発生してしまう。

    そこでジャンプの下降中(または落下中)でないとスライドさせないようにしておきたい。

    そのために調べるのはスピードYだよ。

    ゆっくりスライドできるかテストする

    おっけ!ショート動画では上昇中の様子はわからないけど、気になる人は試してみてね。

    斜めの壁にも対応する

    少し角度のある壁を作ろう。スプライト「ステージ」を開いて、ちょっとだけ壁をかたむけてみてほしい。

    少し押し戻されてしまうことを確認する

    この状態でさっきみたいに壁にジャンプしてみよう。するとフワッと少しだけ後ろに押し戻されてしまう様子が見て取れる。

    これは今後の処理において望ましくない挙動なんだ。しっかり壁に沿ってスライドするようにしたいから、この段階で挙動を修正しておこうと思う。

    ok-scratch ok-scratch

    原因はプレイヤーのブレーキ処理にある。左右のスピードXが少しずつ減少する処理が、ここではじゃまになっているんだ。

    スプライト「プレイヤー」を開き直しておく

    定義「_左右の動きを処理する」を改修する

    キーが何も押されてないときの処理に追加する。スクショを参考に条件式にAND(かつ)を加えよう。

    ここで変数「壁スライドできるか」が1未満かどうか、つまり壁スライド状態ではないことを調べる

    壁に沿ってスライドできるかテストする

    よしよし、準備は整ったね。いよいよコスチュームもセットしていこう。

    壁スライド用のコスチュームをセットする

    壁スライド用のコスチュームもグリフパッチさんが用意してくれているから、ありがたく使わせてもらおう。

    定義「_コスチュームをセットする」を改修する

    条件ブロックを追加するよ。

    壁スライドが出来る状態ならコスを着替えて処理を止めるよ。

    壁スライドが完成したかテストする

    おおおおおお!これはクールだ!最高だろこれ!

    これだけでアスレとしてのクオリティが爆上がりしたって感じない?!

    まとめ

    今回は壁スライドを実装して最高にクールな挙動をスクラッチキャットに加えることができた!いやぁこれは楽しい。ずっと壁スライドしちゃう。できたことにも感動だし、何回見てもクールなんだよね。これを自分が作ったんだって思ったら、ちょっとワクワクしない?ナイスだよ!!

    さぁ、つぎはいよいよ壁ジャンプだ。壁スライド、からのジャンプ!って、おいおい最高かよ!?

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

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

    スクラッチゲーム攻略

    スクラッチゲーム

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