質問するログイン新規登録
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

1196閲覧

Unityでジャンプができない

mano8

総合スコア2

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2024/01/08 10:36

0

0

実現したいこと

UnityのC#でプレイヤーにスペースキーでジャンプをさせようとしたが、ジャンプをしなかった

発生している問題・分からないこと

unity上ではエラーメッセージがでてこない

エラーメッセージ

error

1エラーメッセージなし

該当のソースコード

using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { Rigidbody2D rbody; //Rigidbody2D型の変数 float axisH = 0.0f; //入力 public float speed = 3.0f; //移動速度 public float jump = 9.0f; //ジャンプ力 public LayerMask groundLayer; //着地できるレイヤー bool goJump = false; //ジャンプ開始 // Start is called before the first frame update void Start() { // Rigidbody2Dを取ってくる rbody = this.GetComponent<Rigidbody2D>(); } // Update is called once per frame void Update() { //水平方向の入力をチェックする axisH = Input.GetAxisRaw("Horizontal"); //向きの調整 if(axisH > 0.0f) { //右移動 Debug.Log("右移動"); transform.localScale = new Vector2(0.15f, 0.15f); } else if (axisH < 0.0f) { //左移動 Debug.Log("左移動"); transform.localScale = new Vector2(-0.15f, 0.15f);//左右反転させる } //キャラクターをジャンプさせる if (Input.GetButtonDown("Jump")) { Jump(); } } void FixedUpdate() { //地上判定 bool onGround = Physics2D.CircleCast(transform.position, 0.2f, Vector2.down, 0.0f, groundLayer); if(onGround || axisH != 0) { //地面の上or速度が0ではない //速度を更新する rbody.velocity = new Vector2(axisH * 3.0f, rbody.velocity.y); } if(onGround && goJump) { //地面の上でジャンプキーが押された //ジャンプさせる Vector2 jumpPw = new Vector2(0,jump); //ジャンプさせるベクトルを作る rbody.AddForce(jumpPw, ForceMode2D.Impulse); //瞬発的な力を加える goJump = false; //ジャンプフラグをおろす } } //ジャンプ public void Jump() { goJump = true; //ジャンプフラグを立てる } }

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

検索しましたがでてきませんでした

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

 キャラクター移動にtransformの直接変更はあまりよくありません。
transform変更での移動は細かいワープの連続になってしまうのでrigidbodyの要素を無視したり、上書きしてしまいます。今回の場合もおそらく速度をなくしてしまっています。

 また、ジャンプにaddforceを使用する場合、velocity(速度)やmovepositionを使用しても意図した挙動にならない可能性があるのでそこら辺はいろいろ試してみてください。

投稿2024/01/08 15:56

Sobasenbei

総合スコア132

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mano8

2024/01/09 05:41

回答ありがとうございます! 移動やジャンプを違う方法で試してみますね!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問