質問: Unity;C#についての質問です
回答: まず、GetKeyはキーを押し続けている間実行されます。 つまり、1秒24フレームとして0.5秒押すと、 1フレーム目:pushflagがfalseからtrueに 2:elseの方の処理でpushflagがtrueからfalseに 3:falseからtrueに 4:elseで...というのが12フレーム繰り返されることになります。 GetKeyDownにすることにより、キーを押しこんだ時だけ実行されるようになります。 次に地面との判定ですが、OnTrigger系メソッドは貫通する(isTriggerにチェックを入れている)オブジェクトとの衝突判定時に呼び出されるメソッドです。床に貫通はつけていないと思うので、OnCollision系を使いましょう(床の上に貫通する空オブジェクトを作成しているのなら上の発言は無視してください)。 また、今のままだと床以外のオブジェクトに当たったり離れたりしたときにもメソッドが実行されて、フラグが切り替わってしまいます。引数になっているcollisionが当たってきたオブジェクトのコライダーなので、collision.gameObject.tagやcollision.gameObject.nameなどで情報を取得し、if文でぶつかったor離れたオブジェクトが「床だった場合」のみフラグの変更が行われると良いです。