Unity (2021.3.2f1
FixedUpdateでInputは複数回反応する
キーボードやマウスの検知でInput
クラスを使うことがありますよね。
FixedUpdate
内でInput
を使うと1回の押下で複数回処理が呼びだされることがおきます。
private void FixedUpdate() { if (Input.GetKeyDown(KeyCode.Alpha1)) { // 処理 } }
これはUpdate
とFixedUpdate
の更新間隔が異なっていて、
Input
はUpdate
に合わせたクラスであるためFixedUpdate
だとうまく噛み合いません。
しかし、
この処理がRigidbodyなどの物理系の処理を呼び出すと、物理運動が壊れます。
こちらが立てればあちらが立たず。ぐぬぬ。
押下処理と物理処理を同時にやらないようにするには?
前述の問題を整理した上で両立させるにはどうしたらいいのか。
Update
でフラグを立ててFixedUpdate
で物理処理するのがベターといった感じでしょうかね。
private void Update() { if (Input.GetKeyDown(KeyCode.Alpha1)) { flg = true; } } private void FixedUpdate() { if (flg) { flg = false; // 物理運動 } }
冗長化しますが、これしかないのかなー