君がゲームを作る!Unityゲーム開発入門
第26回 Colliderコンポーネントの種類を変える

いわゆる「当たり判定」ってやつだね

こんにちは!

今日はちょっと遠出をして、1階の集合ポストまで郵便物を取りに行ってきましたあらたまです!

さて、今日はUnity入門の第26回目。前回発生したキャラクターの動きがとまってしまう問題を解決しましょう!

おさらい

前回 キャラクターを横移動操作できるようにしましたが、ときどき ひっかかって動かなくなってしまいましたよね。

今回は、そのひっかかりを解決していきたいと思います!

動かなくなる原因は?

前回の最後にも少し言及しましたが、動きが止まってしまうのは 地面のタイルのつなぎ目にひっかかってしまっていることが原因です。

「ひっかかる」ということは、キャラクターが地面の上に立てるようにしたときに設定した 「Collider(衝突検知)」コンポーネントが関係していそうですね。

タイルの衝突検知の状態を確認しよう

それでは、あらためてColliderコンポーネントの状況を確認してみましょう。
まずはタイルのほうからです。

ヒエラルキーウィンドウで「Tilemap」を選択してください。

緑色の四角がタイル上にたくさん現れましたね。
この緑の四角が、それぞれのタイルに設定されているCollider(衝突検知)の枠です。

タイルのつなぎ目がいろいろなところにあるのがわかりますね。

キャラクターの衝突検知の状態を確認する

つづいてキャラクターのほうのColliderコンポーネントの状態も確認してみましょう。

ヒエラルキーウィンドウでキャラクターを選択して、 インスペクターウィンドウで「Edit Collider」を選択します。

キャラクターの周りにも緑色の四角が現れましたね!

この緑の四角がキャラクターのゲームオブジェクトに設定されているCollider(衝突検知)の枠です。

Colliderを変更して動作をみてみる

この緑の四角の意味を確認するため、ためしに変更してみましょう。

緑の四角はマウスのドラッグで大きさを変えることができます。
四角の下辺中央にある点をドラッグして、大きさを小さくしてみください。

緑の四角を半分くらいに小さくしてみました。 これでテストプレイをして変化を確認してみましょぅ!

▶ボタンをクリックしてプレイモードに入ります。

キャラクターの体が半分地面にはいってしまいました!

この結果から、緑色の四角をもとに衝突検知が行われていることがわかりますね。

なぜ四角形なの?

さて、ひょっとすると気になった方もいるかもしれません。
地面のタイルはまだしも、なぜ忍者のColliderまでも四角形なのでしょうか?

なぜ、忍者の絵の輪郭に合わせたColliderではないのでしょうか?

答えはシンプルです、「この方がプログラムの処理速度が速いから

もちろん忍者の絵の輪郭に合わせたColliderを設定することも可能なのです。 ですが、そうすると衝突検知をするプログラムの負荷が大きくなり、ひいてはゲームの動作速度が低下する原因ともなりかねません。

そのためキャラクターのColliderも絵の輪郭にぴったり合わせるのではなく、 ゲームのプレイで影響のない範囲で、シンプルな形で設定することが望ましいのです。

当たり判定

ゲームでよく遊ばれる人なら「当たり判定」という言葉を聞いたことがあるかもしれませんね。
敵キャラの攻撃が当たるとダメージを受ける範囲などのことを指す言葉です。

まさにこのColliderの形や大きさの設定が「当たり判定」の設定になります。

実際にひっかかっている個所は?

さて、それでは実際にタイルのColliderのつなぎ目にひっかかっている個所はどこでしょうか。

それはキャラクターのColliderの下の角っこです。
この角が、ときどきタイルのColliderにひっかかってしまうのですね。

では、どうやってそれを回避すればよいでしょうか。

もっともシンプルな方法はひっかかる角をなくしてしまうことです。

色々なCollider

これまでは四角形の「BoxCollider 2D」を使ってきましたが、 Colliderには四角形以外にもいろいろな形が用意されています。

例えば、円型の「CircleCollider 2D」。

これなら下の角が取れますが、忍者の絵に比べてちょっと幅が大きすぎますね。。

他には、薬のカプセルのような形の「Capsul Collider 2D」。

これなら下の角も取れますし、忍者の絵におよそ合いそうです!
今回はこれを採用することにしましょう。

Colliderコンポーネントを変更する

それではキャラクターのColliderを「Capsul Collider 2D」に変更していきましょう。

まずは「BoxCollider 2D」の削除です。
インスペクターウィンドウで「BoxCollider 2D」の右上の歯車のアイコンをクリックします。

「Remove Component」をクリックします。

これで「BoxCollider 2D」が削除されました!

続いて「Add Component」をクリックします。

「Physics 2D」をクリックします。

「Capsul Collider 2D」をクリックします。

コンポーネントが追加されました!

テストプレイで動作確認をする

それでは、テストプレイをして変化を確認してみましょう!

▶ボタンを押して、プレイモードに入ります。

無事、矢印キーで左右にキャラクターを操作できました!
今度は途中でひっかかることもありません。

今回はここまでです!

次回はキャラクターをジャンプさせられるようにしたいと思います!

次回へ続く。

>> 続きの記事
【君がゲームを作る!Unityゲーム開発入門】第27回 キャラクターをジャンプさせる(前編)