実現したいこと
こちらのサイト( https://dkrevel.com/makegame-beginner/make-2d-action-jump/ )を参考に、以下のスクリプトを作成しました。
キーボードの左右キーで左右に移動、上キーでジャンプするといったスクリプトとなっているのですが、上キーを押しっぱなしにしていると、アタッチしたオブジェクトがプカプカ浮かんでいるような動きになってしまい、困っています。
上キーを押された瞬間のみジャンプし、長押ししていても地面に着地した状態のままで、一度上キーを離してからでないとジャンプできないようにしたいのですが、なにか有効な方法はありませんでしょうか?
発生している問題・分からないこと
上方向のキーを入力したままにしていると、プカプカと浮かんでいるような動きになってしまう。
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class MapPlayerCtrl : MonoBehaviour 6{ 7 ~(省略)~ 8 9 void Update() 10 { 11 isGround = ground.IsGround(); 12 isHead = ground.IsGround(); 13 14 float horizontalKey = Input.GetAxis("Horizontal"); 15 float verticalKey = Input.GetAxis("Vertical"); 16 float xSpeed = 0.0f; 17 float ySpeed = -gravity; 18 19 if (isGround) 20 { 21 if (verticalKey > 0 && beforeVerticalKey == 0.0f) 22 { 23 ySpeed = jumpSpeed; 24 jumpPos = transform.position.y; 25 isJump = true; 26 jumpTime = 0.0f; 27 } 28 else 29 { 30 isJump = false; 31 } 32 } 33 else if (isJump) 34 { 35 bool pushUpKey = verticalKey > 0; 36 bool canHeight = jumpPos + jumpHeight > transform.position.y; 37 bool canTime = jumpLimitTime > jumpTime; 38 39 if (pushUpKey && canHeight && canTime && !isHead && beforeVerticalKey == 0.0f) 40 { 41 ySpeed = jumpSpeed; 42 jumpTime += Time.deltaTime; 43 } 44 else 45 { 46 isJump = false; 47 jumpTime = 0.0f; 48 } 49 } 50 beforeVerticalKey = verticalKey; 51 52 ~(省略)~ 53 54} 55
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
こちらのサイト( https://teratail.com/questions/131818 )を参考に、別途float型のクラス変数を作成する方法を試してみましたが、ジャンプそのものができなくなるという結果になってしまいました。
補足
特になし
あなたの回答
tips
プレビュー