回答:
FixedUpdate
Update
設定に依存するよりも速くまたは遅く実行できます。これは、負荷(Update
実行速度)と設定した速度FixedUpdate
([編集]-> [プロジェクト設定]-> [時間] )に依存します。理想的には、Update
はフレームごとに1回実行されるため、ここで入力をキャプチャします。FixedUpdate
メソッドの入力(物理ボディの制御など)を操作する必要がある場合は、フラグを設定してから、Update
次のように処理しますFixedUpdate
。
bool leftMouseDown = false;
void Update()
{
if(Input.GetMouseButtonDown(0))
leftMouseDown = true;
}
void FixedUpdate()
{
if(leftMouseDown )
{
//update physics bodies with input
leftMouseDown = false;
}
}
FixedUpdate
物理を頻繁に更新する必要はほとんどなく、固定更新の物理は変数更新の物理よりも予測(決定性)の方がはるかに簡単であるため、メソッドから物理を制御することは依然として良い考えです。
FixedUpdate
。これは、実際に何が「感じられる」かを理解するために、いくつかのプレイテストが必要なものの1つです。
それぞれが何をするかを理解する必要があります。Update()
どちらの方法でも、可能な限り頻繁に呼び出されます(確かではありませんが、上限が設定されている可能性があります)-各フレーム。FixedUpdate()
一定の時間ごとに呼び出される(つまり「固定」)。
入力はUpdate()
と同じくらい単純になります(気づいたようにFixedUpdate()
、入力イベントをキャッチしない可能性があるため)。ただし、ゲームロジックはどちらかに入る可能性があります。物理学は決定論的である必要があり、それがにあるべき理由FixedUpdate()
です。他のものはする必要はありません。使用方法に応じて、適切な機能を決定する必要があります。
ただし、一部のアプリケーションでは、すべてのゲームロジックがFixedUpdate()
(の外であってもUnity
)更新されています。これは「固定ステップゲームループ」と呼ばれます。すべての更新コードを固定ステップ関数に含めると、確定性が得られ、アプリが毎回(および各デバイスで)同じように動作する可能性が高くなります。また、リプレイのようないくつかの派手な機能を可能にします。