【Unity】CharacterController.Move と CharacterController.SimpleMove

2023年4月1日

CharacterController.MoveCharacterController.SimpleMove は、Unityエンジンでキャラクターを制御するために使用される2つのメソッドです。

以下は、それぞれのメソッドの違いを説明したものです。

CharacterController.Move

CharacterController.Move メソッドは、キャラクターを指定した速度で移動させることができます。このメソッドは物理シミュレーションを使用せず、直接キャラクターを移動させます。そのため、壁や障害物と衝突した場合でも、キャラクターをすり抜けさせることができます。

このメソッドは、以下のように使用されます。

Vector3 moveDirection = new Vector3(0, 0, 1);
float speed = 5.0f;
characterController.Move(moveDirection * speed * Time.deltaTime);

この例では、キャラクターを moveDirection 方向に speed の速度で移動させます。

CharacterController.SimpleMove

CharacterController.SimpleMove メソッドは、物理シミュレーションを使用してキャラクターを移動させることができます。このメソッドは重力や摩擦力などの物理的な要素を考慮してキャラクターを移動させるため、よりリアルな動きを実現することができます。

このメソッドは、以下のように使用されます。

Vector3 moveDirection = new Vector3(0, 0, 1);
float speed = 5.0f;
characterController.SimpleMove(moveDirection * speed);

この例では、キャラクターを moveDirection 方向に speed の速度で移動させます。

簡単に言えば、CharacterController.Move は物理シミュレーションを使用せずにキャラクターを移動させるため、壁や障害物と衝突した場合でもすり抜けさせることができます。一方、CharacterController.SimpleMove は物理シミュレーションを使用してキャラクターを移動させるため、よりリアルな動きを実現することができますが、壁や障害物にぶつかった場合はキャラクターが止まるようになります。

Unity,学習バトル

Posted by hidepon