【Unity】Time.timeScaleでCharacterControllerを使った移動も影響を受ける?

Unityにおけるキャラクターコントローラ(CharacterControllerコンポーネント)を用いた移動は、Time.timeScaleの値によって影響を受けることがあります。具体的には、キャラクターコントローラでの移動は、通常、UpdateメソッドまたはFixedUpdateメソッド内で行われ、移動計算にはTime.deltaTimeを使用するのが一般的です。

影響

Time.timeScaleが影響する場合

  • 移動速度の調整: Time.timeScaleを変更すると、Time.deltaTimeがスケーリングされるため、キャラクターの移動速度に直接影響します。例えば、Time.timeScaleが0.5であれば、キャラクターの移動速度も通常の半分になり、ゲームがスローモーションで動作しているように見えます。
  • アニメーションとの同期: キャラクターコントローラを使用する場合、しばしば移動速度とアニメーションの速度を同期させる必要があります。Time.timeScaleが変更されると、これらの同期にも影響を与える可能性があります。

Time.timeScaleが影響しない場合

  • ユーザー入力の検出: 移動命令がユーザー入力に基づいている場合、Time.timeScaleは入力の検出自体には影響しませんが、その入力に基づく移動の実行速度は影響を受けます。
  • 物理的な影響: キャラクターコントローラはUnityの物理エンジン(Rigidbodyを使用しない)とは独立して動作するため、物理的な力(重力や摩擦など)の影響を受けにくいです。しかし、Time.timeScaleが0の場合は、物理エンジンが更新されないため、これに基づく任意の処理も停止します。

Time.deltaTimeとTime.timeScaleとの関係性

Time.deltaTime = 実際のフレーム間時間 × Time.timeScale

Unity

Posted by hidepon