カプセル コライダ
キャラクタ ジョイント

キャラクタ コントローラ

Character Controller は,Rigidbody 物理特性を使用しない 3 人称または 1 人称のプレイヤー制御も主に使用されます。

プロパティ

Property: 特徴:
Height キャラクターの Capsule Collider の高さ。 この値を変更すると,正負の方向で Y 軸に沿ってコライダが拡大縮小されます。
Radius カプセル コライダのローカルの半径。 これは基本的にコライダの幅となります。
Slope Limit コライダが,示された値以下の勾配のみを登るよう制限します。
Step Offset 示された値よりも地面に近い場合にのみ,キャラクターが階段を登ります。
Min Move Distance キャラクターが示された値未満で動こうとしても,全く移動しません。 ジッタを減らすのに使用できます。 ほとんどの場合,この値は 0 のままにしておいてください。
Skin width 2 つのコライダが,Skin Width と同じ深さで互いに突き抜けます。 Skin Wdith が大きくなると,ジッタが減ります。 Skin Width が低いと,キャラクターが動けなくなる場合があります。 Radius の 10% にこの値を設定しておくとよいでしょう。
Center これにより,ワールド スペースでカプセル コライダが相殺されますが,キャラクターがどのように旋回するかには影響しません。
The Character Controller
The Character Controller

詳細

従来の Doom 形式の 1 人称制御は物理的に現実的ではありません。 キャラクターは,時速 90 マイルで走り,すぐに停止し,急旋回します。 これはあまり現実的でないため,剛体と物理特性を使用し,この動作を作成するのは,非実践的で,感じが悪くなります。 これを解決するため,専用のキャラクター コントローラを使用します。 これは単にカプセル型の Collider で,スクリプトからある方向に移動するよう指示します。 コントローラは,移動を実行しますが,衝突により制約されます。 壁に沿って滑り,( Step Offset よりも低い場合)階段を登り, Slope Limit 内で勾配を登ります。

コントローラは,それ自体への力には反応せず,自動的に剛体を離しません。

キャラクターコントローラでリジッドボディまたはオブジェクトを離したい場合は,スクリプティングを通じて,_OnControllerColliderHit()_関数を介して衝突するオブジェクトに力を適用できます。

一方,プレイヤー キャラクターが物理特性の影響をうけるようにしたい場合は,キャラクター コントローラの代わりに,Rigidbody を使用した方がよいでしょう。

キャラクターの微調整

キャラクターのメッシュに合うように, HeightRadius を修正できます。 人間のキャラクターの場合は,約 2 メートルを常に使用することをお勧めします。 また,回転軸がキャラクターの中心でない場合に,カプセルの Center を修正できます。

Step Offset もこれに影響するので,2 メートル サイズの人間の場合は,この値を 0.1 と 0.4 の間にしてください。

Slope Limit は小さすぎないようにしてください。 多くの場合,90°を使用されるのがベストです。 キャラクター コントローラはカプセルの形状のために,壁を登ることができません。

動きを停止させない

Skin Width は,キャラクター コントローラを調整する際に,正しく機能させるための最も重要なプロパティの 1 つです。 キャラクターが動かなくなった場合,多くは Skin Width が小さすぎることが原因です。 _Skin Width_により,オブジェクトが若干コントローラを突き抜けますが,ジッタが減り,動作停止を回避できます。

Skin Width を 0.01 より大きい値で維持し,_Radius_ を 10% より大きい値にしておくとよいでしょう。

Min Move Distance は 0 にしておくことをお勧めします。

キャラクター コントローラのスクリプト リファレンス の リンク を参照してください。

当社ウェブサイトの Resources エリアから,事前設定されたアニメート化および移動するキャラクター コントローラを示すプロジェクトのサンプルをダウンロードできます。

ヒント

  • キャラクターが頻繁に動作停止する場合は, Skin Width を調整してみてください。
  • 自身でスクリプトを記述する場合,キャラクター コントローラが物理特性を使用して,オブジェクトに影響する場合があります。
  • キャラクター コントローラは,物理特性を通じて,オブジェクトの影響を受けることはありません。
  • 注意:Inspectorでキャラクターコントローラープロパティを変更することはシーン内でコントローラーを再生成することになります。ですから今あるトリガーは全て関連がいったん切れてしまいますし,再びコントローラーが動くまでOnTriggerEnterメッセージを受け取ることも出来ません。
カプセル コライダ
キャラクタ ジョイント