ネタ元
tl; dr
以下は Update でも使える(いつ使っても、その1度きりの呼び出しで(どのような時間の流れ方倍率でも)同じ効果が得られる)
- AddForce (ForceMode.Impulse) // 質量の影響を受ける(重ければ変化しづらい)力を加える
- AddForce (ForceMode.VelocityChange) // 質量を無視して速度を加える
FixedUpdate のみで使う((連続したFixedUpdateで)何度か連続して使い続けられることを想定している。)
- AddForce (ForceMode.Force) // 質量の影響を受ける力を加える
- AddForce (ForceMode.Acceleration) // 質量を無視して加速度を加える
以下は Update のみで使える
- Input.GetKeyDown // キーが押下されたUpdateのその1フレーム内で有効(FixedUpdateのフレームではない)
- Input.GetKeyUp // キーが押下されたUpdateのその1フレーム内で有効(FixedUpdateのフレームではない)
以下は FixedUpdate でも使える
- Input.GetKey // キーが今押されているかどうかの判断なのでフレーム関係ない
つまり
ボタンが押された瞬間に力を加える(ジャンプめいた処理) → Update で Input.GetKeyDown を見て AddForce (ForceMode.Impulse)
ボタンを押している間は力を加える(移動めいた処理) → FixedUpdate で Input.GetKey を見て AddForce (ForceMode.Force)
おまけ