Unity2Dお勉強中に、ジャンプを実装してみたら連打でバグる感じでした。
↓がバグってるものです。(PCのADor左右キーで歩けてスペースでジャンプします。スマホは操作できません)
移動しながらジャンプキーを連打しまくるとジャンプが小さくなったり大きくなったりします。
原因を考えて直してみました。
Unity2Dでジャンプ連打でおかしい場合、力に意図しない計算が入っているかも
ジャンプ力はGUIで設定できるようにパブリックで宣言しています。
しかし、場合によってジャンプの高さが変わるということは、設定したジャンプ力がどこかで変わってしまっていると思われます。
具体的にはジャンプ実行(のフラグ)を「ジャンプボタンが押された時」にONにしていたため、空中でもフラグ管理が動いてしまっており、意図しないタイミングでジャンプ処理が動きY方向のvelocityに何か意図しない計算が発生していたと思われます。
ひとまずこの着眼点で修正をしてみました。
ジャンプ実行の瞬間
- ジャンプ実行の瞬間(私はAddForce)の一行上にY方向のベロシティを0にする処理を追加
- ジャンプメソッド実行条件を「ジャンプボタンが押された時 かつ 地面にいる時」に変更(地面にいる時を追加)
Unity2Dで壁に触れるとジャンプができない場合は摩擦を0にしてみる
今回はキャラクター作成時点に設定しましたが、詰まりそうな点として摩擦設定がありそうだと思いました。
プレイヤーの当たり判定用に作ったコライダー2Dへ、Frictionの値を0に設定したフィジカルマテリアルズをアタッチすることで摩擦抵抗がなくなり、壁に擦れてもジャンプができます。
ひとまず治ったものがこちら
ジャンプを連打しても大丈夫になりました。(PCのADor左右キーで歩けてスペースでジャンプします。スマホは操作できません)
コメント