スマホとPCの画像

前回の記事でUnity-chanがジャンプし続けてしまう問題がありました。

今回はなぜジャンプしつづけてしまうのかとその解決方法について記載していこうと思います。

ジャンプし続けてしまう理由

ジャンプができる条件は「接地していること」です。

つまり接地していないのに、接地していることになっていることが悪さをしていそうですね。

接地条件(Third Person Controller > Grounded)を見直します。

Third Person ControllerのGtoundedフラグ

では、ゲームを実行して「Grounded」の状態を確認します。

まずは接地している状態を確認します。

Unity-chanの接地時のGrouded状態

接地状態ですね。

次にジャンプしている状態を確認します。

Unity-chanのジャンプ時のGrouded状態

こちらも接地状態になっています。

当たり判定である緑の円がUnity-chanの当たり判定と接触しているため接地と判定されてしまっているようです。

解決方法

解決する手順は2つです。

ジャンプし続ける問題の解決方法

キャラクターの当たり判定を見直す
地面の当たり判定を見直す

キャラクターの当たり判定を見直す

Unity-chanのインスペクタウィンドウを確認します。

「Character Controller > Step Offset」を0.2にします。

「 Character Controller > Center > Y」を0.08にします。

「Character Controller > Radius」と 「Character Controller > Height」を0.1にします。

CharacterControllerのパラメータ見直し

次に「Third Person Controller > Grounded Offset」を0.15にします。

「 Third Person Controller > Grounded Radius」を0.01にします。

ThirdPersonControllerのパラメータ見直し

Unity-chanを確認します。

当たり判定確認

Unity-chanと接地判定が接触していないことがわかります。

接地判定の拡大

この状態でゲームを実行します。

設定を変更しても接地条件が間違っている

接地判定がfalse(赤色)になっています。

判定状態を色(赤色)で確認

この原因は地面の当たり判定と接地判定が接触していないことが理由です。

地面の当たり判定を見直す

現在、地面は3DオブジェクトのPlaneを使用しています。

Planeは厚みがないので当たり判定が狭くなってしまいます。

ですので地面を「Cube」に変更して厚みをつけてみます。

地面をPlaneからCubeに変更

インスペクタウィンドウからCubeを変形します。

Cubeのパラメータを変更

地面らしくなりました。

地面が変わったのでUnity-chanが埋まっている

Unity-chanが少し埋まってしまったので地面の上に移動させてあげます。

Unity-chanの座標を修正

動作を確認する

それでは修正ができたので動作確認をします。

おわりに

無事ジャンプができるようになりました。

当たり判定はUnity開発を進めていく上で避けては通れないので身に着けたいですね。

Unity-chanライセンス画像

この作品はユニティちゃんライセンス条項の元に提供されています