質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

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

Q&A

解決済

1回答

2746閲覧

unity2D ジャンプの実装がなぜかできない

syosinsya1202

総合スコア10

C#

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

0グッド

0クリップ

投稿2022/07/08 09:26

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; //ジャンプ開始フラグ bool onGround = false; //地面に立っているフラグ // Start is called before the first frame update void Start() { //Rigidbodyを取ってくる 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(1, 1); } else if(axisH < 0.0f) { //左移動 Debug.Log("左移動"); transform.localScale = new Vector2(-1, 1); //左右反転させる } //キャラクターをジャンプさせる if(Input.GetButtonDown("Jump")) { Jump(); //ジャンプ } } void FixedUpdate() { //地上判定 onGround = Physics2D.Linecast(transform.position, transform.position - (transform.up * 0.1f), groundLayer); if(onGround || axisH != 0) { //地面の上1or速度が0ではない //速度を更新する rbody.velocity = new Vector2(speed * axisH, rbody.velocity.y); } if(onGround && goJump) { //地面の上でジャンプキーが押された //ジャンプさせる Debug.Log("ジャンプ!"); Vector2 jumpPw = new Vector2(0, jump); //ジャンプさせるベクトルを作る rbody.AddForce(jumpPw, ForceMode2D.Impulse); //瞬間的な力を加える goJump = false; //ジャンプフラグを下ろす } } //ジャンプ public void Jump() { goJump = true; //ジャンプフラグを立てる Debug.Log("ジャンプボタン押し"); }

}

教本を見ながら(とりあえず丸写ししながら)、unityで2Dアクションゲームを作っていたところ、プレイヤーの横移動は実装できたのですが、その次のステップのジャンプができませんでした。特にコンパイルエラーはなかったです。
"ジャンプボタン押し”はコンソールウィンドウに表示され、”ジャンプ”は表示されなかったのでif(onGround && goJump)が真になっていないようなので、地上判定の部分が何かおかしいのかと思いましたが、結局その原因はわかりませんでした。
どなたか回答お願いします。

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

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

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

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

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

bboydaisuke

2022/07/08 13:03

> transform.position - (transform.up * 0.1f), ここの 0.1 を 1 とか 5 とか大きい数字にしたらいいのでは?
bboydaisuke

2022/07/08 15:52

> public LayerMask groundLayer; //着地できるレイヤー もしくは、groundLayer をインスペクターから正しく設定していないのでは?
syosinsya1202

2022/07/08 23:27

0.1を1に変えたところ解決しました。 回答欄に書かれたものではないのでベストアンサーには選べないようですが、回答ありがとうございました。
guest

回答1

0

自己解決

質問への追記、修正の依頼に合った通り、0.1fを1.0fにかえたところ解決しました。

投稿2022/07/08 23:28

syosinsya1202

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問