# Character Controller コンポーネントのリファレンス

> Reference page for the Character Controller component.

**Character Controller** は、主に **Rigidbody** による物理特性を使用しない、一人称や三人称のプレイヤー制御に使用されます。


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/Inspector-CharacterController.png)

## プロパティ##properties

| ***プロパティ:***          | ***機能:***                                                                                                                               |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| **Slope Limit**       | コライダーが、指定した値以下の勾配 (単位は度) のみを登るよう制限します。                                                                                                  |
| **Step Offset**       | 指定された値よりも地面に近い場合にのみ、キャラクターが階段を登ります。キャラクターコントローラーの高さより大きくした場合、エラーが発生します。                                                                 |
| **Skin width**        | 2 つのコライダーが、Skin Width の深さまで互いに食い込みます。Skin Width が大きくなると、ジッターが減ります。Skin Width が小さいと、キャラクターが動けなくなる場合があります。値を Radius の 10% に設定しておくとよいでしょう。 |
| **Min Move Distance** | キャラクターが指定された値未満で動こうとしても、まったく動きません。これは、ジッターを減らすのに利用できます。ほとんどの場合、この値は 0 のままにしておいてください。                                                    |
| **Center**            | これにより、ワールド空間でカプセルコライダーをオフセットしますが、キャラクターがどのように旋回するかには影響しません。                                                                             |
| **Radius**            | カプセルコライダーのローカル半径。これは基本的にコライダーの幅となります。                                                                                                   |
| **高さ**                | キャラクターの\_\_カプセルコライダー\_\_の高さ。この値を変更すると、正負の方向で Y 軸に沿ってコライダーが拡大縮小されます。                                                                     |


**キャラクターコントローラー:**
![](/api/media?file=/engine/6000.0/media/images/CharacterControllerWindow.jpg)

## 詳細##details

従来の Doom 形式の一人称制御は物理特性を使用していないため、現実的ではありません。キャラクターは、時速 90 マイルで走り、急停止し、急旋回します。現実的に見せるために、リジッドボディと物理特性を使用してキャラクターの動きを制御しようとすると難しく、違和感があります。これを解決するために、専用の Character Controller (キャラクターコントローラー) を使用します。これは単にカプセル型の\_\_コライダー\_\_で、スクリプトを使ってある方向に移動するよう指示します。コントローラーは移動を実行しますが、衝突によって制約されます。壁に沿って滑り、**Step Offset** よりも低い場合は階段を登り、**Slope Limit** 内で坂道を登ります。

コントローラーは、それ自体にかかる力には反応せず、自動的にリジッドボディを跳ね返しません。

キャラクターコントローラーでリジッドボディやオブジェクトを跳ね返したい場合は、スクリプトで、**OnControllerColliderHit()** 関数を通して衝突するオブジェクトに力を適用します。

一方、プレイヤーキャラクターが物理特性の影響を受けるようにしたい場合は、キャラクターコントローラーの代わりに[リジッドボディ](/engine/6000.0/manual/physics-section/physics-overview/rigidbody/class-rigidbody.md)を使用する方がよいでしょう。

### キャラクターの微調整##fine-tuning-your-character

キャラクターのメッシュに合うように、**Height** と **Radius** を修正できます。人間型のキャラクターの場合は、常に、約 2 メートルを使用することをお勧めします。また、ピボットポイントがキャラクターの中心でない場合に、カプセルの\_\_ Center\_\_ で修正できます。

**Step Offset** も影響します。2 メートルサイズの人間に対して、この値が 0.1 と 0.4 の間になるようにしてください。

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

### 動きを停止させない##don't-get-stuck

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

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

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

キャラクターコントローラーのスクリプトリファレンスは[こちら](/engine/6000.0/script-reference/unity-engine/character-controller.md)を参照してください。

## ヒント##hints

* キャラクターが頻繁に動作停止する場合は、**Skin Width** を調整してみてください。
* 独自のスクリプトを記述するとき、キャラクターコントローラーが物理特性を使用して、オブジェクトに影響する場合があります。
* キャラクターコントローラーは、物理特性を通じて、オブジェクトの影響を受けることはありません。
* インスペクターで Character Controller のプロパティを変更すると、シーン内でコントローラーを再生成します。そのため、今あるトリガーがすべて失われるので、再びコントローラーが動くまで OnTriggerEnter メッセージを受け取ることができません。
* レイキャストなどのクエリで使用されるキャラクターコントローラーのカプセルは、ささいな要因で縮小する場合があります。したがって、キャラクターコントローラーのギズモにヒットしているように見える場合でも、いくつかのきわどいケースではクエリが失敗する可能性があります。
