前提・実現したいこと
こちらのサイトを見ながら現在横スクロールアクションゲームを作っています。
https://dkrevel.com/makegame-beginner/make-2d-action-script-tidy
以下のようなコードでジャンプの挙動を実装し問題なく動くのですが、上キーを押しっぱなしにしていると
ずっとピョンピョンはね続けてしまいます。
押しっぱなしにしていてもジャンプは一度きりで、一度キーを離して再度押すまでジャンプしないようにするには
どうすればいいでしょうか?
該当のソースコード
C#
1 private float GetYSpeed() 2 { 3 float verticalKey = Input.GetAxisRaw("Vertical"); 4 float ySpeed = -gravity; 5 6 if (isGround) 7 { 8 if (verticalKey > 0 && jumpTime < jumpLimitTime) 9 { 10 ySpeed = jumpSpeed; 11 jumpPos = transform.position.y; 12 isJump = true; 13 jumpTime = 0.0f; 14 15 } 16 else 17 { 18 isJump = false; 19 20 } 21 } 22 else if (isJump) 23 { 24 if (verticalKey > 0 && jumpPos + jumpHeight > transform.position.y && jumpTime < jumpLimitTime && !isHead) 25 { 26 ySpeed = jumpSpeed; 27 jumpTime += Time.deltaTime; 28 } 29 else 30 { 31 isJump = false; 32 jumpTime = 0.0f; 33 34 } 35 } 36 if (isJump) 37 { 38 ySpeed *= jumpCurve.Evaluate(jumpTime); 39 } 40 return ySpeed; 41 }
試したこと
8行目の
if (verticalKey > 0 && jumpTime < jumpLimitTime)
を
if (Input.GetKeyDown("up") && jumpTime < jumpLimitTime)
にしてみると、ずっとはね続ける現象は無くなりましたがジャンプの高さが非常に小さくなってしまいました。
補足情報(FW/ツールのバージョンなど)
参考サイトでは3行目の
float verticalKey = Input.GetAxisRaw("Vertical");
は本来
float verticalKey = Input.GetAxis("Vertical");
になっていますが、それだと一度ボタンを押しただけで二度跳んでしまったり挙動が怪しかったので
変えていますが、それ以外はサイトに掲載されているコードと一緒です。
(ひとつ前に質問させて頂いた内容が類似する問題だったため、その時いただいた解決策をこっちにも適用
している状態です。)

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/12 07:04
2020/03/12 07:35
2020/03/12 08:10
2020/03/12 08:45
2020/03/12 08:52
2020/03/12 09:17