前提・実現したいこと
2Dアクションゲームのジャンプについて。
キャラクターはRigidbodyのvelocityを変更して動かしています。
発生している問題・エラーメッセージ
x方向には自動で等速に移動する仕様なのですがy軸方向の速さを変更するとなぜかx軸方向の速さも変わってしまいます。y軸方向の速さを小さくするとx軸方向の速さが大きくなってしまいます。特にジャンプの時に困ります。
velocityが単にx軸方向とy軸方向の速度ベクトルの足し算であればそんなことはあり得ないと思ったのですが・・・。
該当のソースコード
private void FixedUpdate() { isGrounded = groundChecker.GetIsGrounded(); //接地判定です SetXSpeed(); SetYSpeed(); // それぞれxSpeedとySpeedを変更します rb.velocity = new Vector2(xSpeed, ySpeed); } private void SetXSpeed() { xSpeed += acceleration * Time.deltaTime; } private void SetYSpeed() { // Updateでジャンプ用の入力を受け付けるとここを通ります if (action == Action.Jump) { //ジャンプ開始 if (isGrounded && !isJumping) { jumpTimer = 0.0f; fallTimer = 0.0f; //AnimationCurve用のタイマーです ySpeed = jumpSpeed; isJumping = true; //実際にジャンプしているかどうか } //上昇中 else if (!isGrounded && isJumping && ySpeed > 0) { jumpTimer += Time.deltaTime; ySpeed *= jumpCurve.Evaluate(jumpTimer); } //下降中 else if (!isGrounded && isJumping && ySpeed <= 0) { fallTimer += Time.deltaTime; ySpeed = -fallSpeed * fallCurve.Evaluate(fallTimer); } //ジャンプ終了 else if (isGrounded && isJumping) { isJumping = false; SetAction(Action.Normal); animator.SetBool("Jump", false); jumpTimer = 0.0f; fallTimer = 0.0f; } } //接地中 else { ySpeed = -fallSpeed; } }
補足情報(FW/ツールのバージョンなど)
Unity 2019.4.14f1 です。
C#をつかってます。
回答1件
あなたの回答
tips
プレビュー