スクラッチコーチキャンプ ゲームクリエイターに、オレはなる!そんなキミを応援(子供も大人も)
  • ALL
  • はじめての方へ
  • 3Dゲームの作り方

    壁をすり抜けちゃう!衝突判定を作る(爆速オンライン3Dゲームの作り方 #06)

    壁をすり抜けちゃう!衝突判定を作る(爆速オンライン3Dゲームの作り方 #06)
    この記事は スクラッチコーチで掲載されているオリジナル記事 のバックアップです。
    スターター作品
    リミックスする作品
    今回の完成サンプル
    Scratchへ

    当記事はグリフパッチさんの動画を参考に、日本人向けに分かりやすく手直ししたものです。和訳解説は動画作者のグリフパッチさんご本人から許可をいただいて掲載しております。チャンネルはYOUTUBE ( by griffpatch )からどうぞ。

    ゴンザレスからゲームクリエイターへの挑戦状

    そういえば壁はすりぬけちゃう状態だったね!これじゃあまともに歩き回れないぞ!

    今回の目標「壁の衝突判定を作る」

    壁をすり抜けちゃう!衝突判定を作る(爆速オンライン3Dゲームの作り方 #06)を語るok-scratch ok-scratch

    今回の手順は、グリフパッチさんのオリジナルの動画だと最初に作り込むところなんだ。僕は先に3D化を急ぎたかったから後回しにした。その都合上、スクショがちょっと古い。具体的には背景が真っ黒で、3Dの壁は映ってない。ただまぁ実装に違いはないから、スクショの背景が真っ黒なのは気にしないで進めてほしい。

    マップを見えるようにしておく

    このあとの処理でいったん見えるようにしといたほうが便利なので修正しておくね。

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

    壁の衝突判定を作る

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

    壁をすり抜けちゃう!衝突判定を作る(爆速オンライン3Dゲームの作り方 #06)を語るok-scratch ok-scratch

    レベルと同じようにプレイヤーも見えるようにしておこう!プレイヤーの幽霊も0にしておいてね。

    定義「移動する」 を作る

    引数に距離をもたせよう。スクショだと忘れてるけど「_移動する」って感じで最初にアンダースコア付けておくの推奨。

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

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

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

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

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

    CHECK! 壁を通り抜けなくなったかテストしよう!

    楽勝だね。

    壁の衝突判定の基本ができて、壁をすり抜けなくなった。

    埋もれを回避する

    壁衝突判定はうまくいった。でもちょっとした問題の種が同時にうまれてしまった。↓これをみてほしい。

    いまって場合によっては↑こんな感じで埋もれが発生してしまうんだ。これは2Dならそこまで問題ではないけど、3Dだと顔だけ壁の中に入るような状況が生まれることもある。これは事前に回避しておきたい。

    そこであらかじめ作っておいたヒットボックスというコスチュームの出番だ。

    ヒットボックスを利用する

    定義「_移動する」の最初で、コスチュームをヒットボックスに着替えよう。

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

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

    壁をすり抜けちゃう!衝突判定を作る(爆速オンライン3Dゲームの作り方 #06)を語るok-scratch ok-scratch

    ヒットボックスのサイズは4 x 4で、プレイヤーのサイズは8 x 8だから、ヒットボックスに変えてから壁に衝突したか判定するほうが、より細かく壁との距離を測ることができる。結果的に埋もれなくなっているよ。もっともっと細かく衝突判定をする方法もあるけど、今はこれで十分だ。

    CHECK! 壁に埋もれなくなったかテストする

    おっけぃ!

    まとめ

    よし、これで移動の基本ができた。壁の衝突判定もできたし、埋もれも回避できた。

    今回は以下のことができるようになったぞ。

    • 壁に触れたら後退することで、すりぬけなくできた
    • コスチュームを調整するだけでカンタンに埋もれ回避できた

    よーしこれで動き回れるね!って、あれあれ、まだスクラッチキャットが進めずにいるぞ!次回もチェックしてみよう。

    グリフパッチさんの動画を参考にしています

    今回のチュートリアルは世界No.1スクラッチャーとして名高いグリフパッチさんの動画を参考にしているよ。ただし手順を一部変えているところもあるんだ。

    この記事への質問やコメントをどうぞ

    ただいま実験的に質問を受け付けています。

    スパム防止のため、 質問をするにはログインが必要 です。ログインはスクラッチのアカウントがあれば誰でもできます。

    ブクマよろしくお願いします!という口コミを寄せてくれた方 ブクマよろしくお願いします!
    どんどん追記・更新していくので、ブックマークやシェアよろしくお願いします!