- スターター作品
- なし
- 今回の完成サンプル
- なし
ゴンザレスからの挑戦状

そういえば壁はすりぬけちゃう状態だったね!これじゃあまともに歩き回れないぞ!
今回の目標「壁の衝突判定を作る」

u003cpu003e今回の手順は、グリフパッチさんのオリジナルの動画だと最初に作り込むところなんだ。僕は先に3D化を急ぎたかったから後回しにした。その都合上、スクショがちょっと古い。具体的には背景が真っ黒で、3Dの壁は映ってない。ただまぁ実装に違いはないから、スクショの背景が真っ黒なのは気にしないで進めてほしい。u003c/pu003e
マップを見えるようにしておく
このあとの処理でいったん見えるようにしといたほうが便利なので修正しておくね。

幽霊をゼロにセットしよう。

壁の衝突判定を作る
スプライト「プレイヤー」を開く。


u003cpu003eレベルと同じようにプレイヤーも見えるようにしておこう!プレイヤーの幽霊も0にしておいてね。u003c/pu003e
定義「移動する」 を作る
引数に距離をもたせよう。スクショだと忘れてるけど「_移動する」って感じで最初にアンダースコア付けておくの推奨。

◯歩動かすブロックに引数を割り当てる。

上向き矢印と下向き矢印の処理を、この定義に置き換えよう。

定義側に条件ブロックを追加する。

レベルに触れたら、っていう条件にして壁にあたったときの処理を作るよ。

シンプルに壁にあたったら進んだ分だけ下がるようにする。

CHECK! 壁を通り抜けなくなったかテストしよう!
楽勝だね。
u003cpu003e壁の衝突判定の基本ができて、壁をすり抜けなくなった。u003c/pu003e
埋もれを回避する
壁衝突判定はうまくいった。でもちょっとした問題の種が同時にうまれてしまった。↓これをみてほしい。

いまって場合によっては↑こんな感じで埋もれが発生してしまうんだ。これは2Dならそこまで問題ではないけど、3Dだと顔だけ壁の中に入るような状況が生まれることもある。これは事前に回避しておきたい。
そこであらかじめ作っておいたヒットボックスというコスチュームの出番だ。
ヒットボックスを利用する
定義「_移動する」の最初で、コスチュームをヒットボックスに着替えよう。

回転方法を「回転しない」に変える。

処理の最後で、それぞれもとに戻すよ。


u003cpu003eヒットボックスのサイズは4 x 4で、プレイヤーのサイズは8 x 8だから、ヒットボックスに変えてから壁に衝突したか判定するほうが、より細かく壁との距離を測ることができる。結果的に埋もれなくなっているよ。もっともっと細かく衝突判定をする方法もあるけど、今はこれで十分だ。u003c/pu003e
CHECK! 壁に埋もれなくなったかテストする
おっけぃ!
まとめ
よし、これで移動の基本ができた。壁の衝突判定もできたし、埋もれも回避できた。
今回は以下のことができるようになったぞ。
- 壁に触れたら後退することで、すりぬけなくできた
- コスチュームを調整するだけでカンタンに埋もれ回避できた
よーしこれで動き回れるね!って、あれあれ、まだスクラッチキャットが進めずにいるぞ!次回もチェックしてみよう。
グリフパッチさんの動画を参考にしています
今回のチュートリアルは世界No.1スクラッチャーとして名高いグリフパッチさんの動画を参考にしているよ。ただし手順を一部変えているところもあるんだ。