【Unity】Colliderを最適化して正確な当たり判定にする

今回は、コライダの形を調整していきます。

プレイヤーとステージの間に隙間が出来ているので、このままだと大雑把な当たり判定となってしまいます。この当たり判定をなるべく正確にしていきます。

スポンサーリンク

コライダの形を修正する方法

現在のプレイヤーのコライダは「円形」です。

縦長のオブジェクトに円形コライダを適用すると、左右に大きな隙間が出来てしまうので、見た目上物体と接触していないのに当たり判定が働いて接触してしまいます。

では、コライダの形状を「四角形」にするとどうでしょうか。

円形に比べるとフィットするイメージがありますが、ちょっとした段差に引っかかってしまいます。アクションゲームとしては操作性が悪いですね。

移動するプレイヤーに適したコライダは「カプセル型」になります。カプセル型にすることで接地する部分が円形なのでプレイヤーの移動がスムーズになります。

プレイヤーのコライダを変更する

カプセル型のコライダは、円と四角形のコライダを組み合わせて実現します。

まずは、元々作成していたプレイターの円形コライダを移動して縮小させます。

ヒエラルキーウィンドウからプレイヤーを選択して、Circle Collider 2D項目のOffsetの値を変更することでコライダの座標を変更できます。縦方向を移動させたいのでYの値をマイナスにすれば良いですね。

次に、Radiusの値で半径を変更することが出来ます。オブジェクトのサイズにフィットするように適宜調整します。

胴回りのコライダを四角形で作成します。

プレイヤーを選択した状態で「Physics 2D」→「Box Collider 2D」と進みます。

プレイヤーにフィットさせるためにBox Collider 2D項目のSizeの値を変更します。

半カプセル型のコライダを再現する

こんな感じですね。

プレイヤーの回転を防ぐ

足元が円形なので、ちょっとした力が加わると倒れてしまいます。

そこで、Freeze RotationからZ軸の回転を防止します。Freeze Rotationは指定した軸の回転を防ぐための設定です。

プレイヤーを選択してRigidbody 2D項目のConstraintsを開いてFreeze RotationのZにチェックを入れます。

Freeze Rotationで回転を防止する設定

足場のコライダを修正する

足場に着地した際に、浮いたように見えないようにコライダを若干小さくします。

先ほどと同じように、足場のオブジェクトを選択してBox Collider 2D項目のSizeを今の値より少しだけ小さくしましょう。

足場のコライダを小さくする

ゲームを実行して確認する

修正が終わったら、足場にしっかり着地しているかチェックしましょう。

プレイヤーがステージに着地している様子

このように、違和感なく着地していればOKです。

オブジェクトのタイプによって使うコライダの種類も変わってくるので、適切なコライダを選択する必要がありますね。

次は、プレイヤーのスクリプトを作成していきます。