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

キャラクタ コントローラ

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

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メッセージを受け取ることも出来ません。
カプセル コライダ
キャラクタ ジョイント