回答編集履歴

1 リンク記載漏れ

sakura_hana

sakura_hana score 10337

2019/05/16 10:28  投稿

UpdateとFixedUpdateの関係かもしれません。
(ググるか「unity ジャンプ」でteratail内を検索すると類似事例が出るのでそちらも参考に)
[イベント関数の実行順 - Unity マニュアル](https://docs.unity3d.com/ja/current/Manual/ExecutionOrder.html)
(「unity Update FixedUpdate」でググるか「unity ジャンプ」でteratail内を検索すると類似事例が出るのでそちらも参考に)
Updateはその時々のFPSによって実施頻度が変わります。
FixedUpdateは毎回同じ時間毎に実施されます。そして**物理演算はこのタイミングでしか実施されません。**
(厳密に言うと「毎回同じ時間毎に実施される物理演算全てが終わった後でFixedUpdateが呼ばれる」ですが)
つまり
`Update → Update → FixedUpdate → Update → FixedUpdate → FixedUpdate`
みたいな順番で呼び出される可能性がある訳です。
なので
1回目のUpdateで`AddForce`と`isGroud=false`にしたとしても、
次のFixedUpdateが来る前にもう一度Updateが来た場合、
「AddForceされたがまだ移動していない(物理演算されてないから)=接地している=`isGroud=true`になる
(そのUpdateでクリックしていなければisGroud=falseにならない→その状態で次のFixedUpdateが来たタイミングで移動する)」
という状況になっているものと予想されます。
とりあえず地面レイヤー判定をFixedUpdate内に書いてみてください。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る