前提・実現したいこと
Unity2Dでモバイルジョイスティック上入力をしたときにキャラクターをジャンプさせたいのですが、天井が低くなっている場所などでジャンプした後スティックを上に入力したままにしておくと、障害物がない場所でも低い天井の高さまでしかしかジャンプしなくなり、入力をいったんやめて再度ジャンプすると通常は画面半分ほどまでしかジャンプしないはずが倍ぐらい高くジャンプしてしまいます。
スペースキーでジャンプした場合はこの不具合は起こりませんでした。
これらを解消して障害物のない場所では通常の高さでジャンプするようにしたいです。
何かアドバイスいただければ幸いです。よろしくお願いします。
接地判定やジャンプ方法などこちらのサイトを参考にさせていただいております。
https://hiyotama.hatenablog.com/archive/category/%E6%A8%AA%E3%82%B9%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%AB%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3
該当のソースコード
C#
1void FixedUpdate() 2 { 3 //地面との当たり判定 4 isGrounded = Physics2D.Linecast( 5 transform.position + transform.up * 1, 6 transform.position - transform.up * 1, 7 groundLayer); 8 9 //ジャンプ 10 if (!gameover && !gameclear && !pause.activeSelf) 11 { 12 if (CrossPlatformInputManager.GetAxisRaw("Vertical") == 1.0f || Input.GetKeyDown("space")) 13 { 14 if (isGrounded) 15 { 16 anim.SetBool("Dash", false); 17 anim.SetTrigger("Jump"); 18 19 isGrounded = false; 20 21 //property.getNowConditionJumpPower()=700 22 rigidbody2D.AddForce(Vector2.up * property.getNowConditionJumpPower()); 23 24 } 25 } 26 27 float velY = rigidbody2D.velocity.y; 28 29 bool isJumping = velY > 0.1f ? true : false; 30 bool isFalling = velY < -0.1f ? true : false; 31 32 anim.SetBool("isJumping", isJumping); 33 anim.SetBool("isFalling", isFalling); 34 } 35 36 //以下省略 37
試したこと
元々Updateに記述していたジャンプ処理をfixedupdateに移動させてみましたが効果はありませんでした。
二段ジャンプしてしまっているのかと思い接地判定を見直し、Debug.Logで確認してみましたがジャンプ中は常にfalseになっていました。
ジャンプ中JumpPowerが増えてしまってるのかと確認しましたが700のままでした。
CrossPlatformInputManager.GetAxisRaw("Vertical") == 1.0fの数値を変え入力の判定を変えてみましたが不具合は変わりませんでした。
補足情報(FW/ツールのバージョンなど)
Unity2018.3.5f1
回答1件
あなたの回答
tips
プレビュー