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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1089閲覧

オブジェクトをインスペクターにアタッチできません

退会済みユーザー

退会済みユーザー

総合スコア0

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/02/01 01:13

unityでゲームを始めると「NullReferenceException: Object reference not set to an instance of an object
PlayerManager.FixedUpdate () (at Assets/Scripts/PlayerManager.cs:39)」というエラーが出ます。
このエラーの原因はオブジェクトをインスペクターにアタッチしていないからだということを前回教えていただきました。
もう一度それを復習してみたのですが、こんどはアタッチができなくなってしまいました。
ドロップアンドドラッグをしようにも禁止マークが出っぱなしなのです。

イメージ説明

その原因と解決方法を教えていただけますでしょうか。

using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerManager : MonoBehaviour { //プライベート変数 Animator anim = null; Rigidbody2D rigid2D = null; private bool isGround = false; private bool isHead = false; private float jumpPos = 0.0f; private float jumpTime = 0.0f; private bool isJump = false; //パブリック変数 インスペクターで設定 public float speed;//速度 public float jumpSpeed;//ジャンプ速度 public float jumpHeight; public float jumpLimitTime;//ジャンプ制限時間 public float gravity;//重力 public GroundCheck ground;//接地した判定 public GroundCheck head;//頭をぶつけた判定 private void Start() { rigid2D = GetComponent<Rigidbody2D>(); anim = GetComponent<Animator>(); } private void FixedUpdate() { //接地判定を得る isGround = ground.IsGround();//GroundCheckの中にあるIsGround()を呼び出す isHead = head.IsGround();//エラーの原因と思われる箇所 //キーを入れたら行動する float horizontalKey = Input.GetAxis("Horizontal"); float verticalKey = Input.GetAxis("Vertical"); float xSpeed = 0.0f; float ySpeed = -gravity; Debug.Log(isGround); Debug.Log(head); if (isGround) { if (verticalKey > 0) { ySpeed = jumpSpeed; jumpPos = transform.position.y;//ジャンプした位置を記録する isJump = true; jumpTime = 0.0f; // Debug.Log(verticalKey); } else { isJump = false; //Debug.Log("verticalKey ! 0"); } } else if(isJump) { //上方向を押しているか bool pushUpKey = verticalKey > 0; //現在の高さが飛べる高さより下か bool canHeight = jumpPos + jumpHeight > transform.position.y; //ジャンプ時間が長すぎないか bool canTime = jumpLimitTime > jumpTime; if (pushUpKey && canHeight && canTime && !isHead) { ySpeed = jumpSpeed; jumpTime += Time.deltaTime; Debug.Log(isHead); } else { isJump = false; jumpTime = 0.0f; } } if (horizontalKey>0) { anim.SetBool("run", true); transform.localScale = new Vector3(1, 1, 1); xSpeed = speed; //Debug.Log("horizontal>0"); } else if (horizontalKey<0) { anim.SetBool("run", true); transform.localScale = new Vector3(-1, 1, 1); xSpeed = -speed; //Debug.Log("horizontal<0"); } else { anim.SetBool("run", false); xSpeed = 0.0f; } anim.SetBool("jump", isJump); anim.SetBool("ground", isGround); //y方向はいじらない rigid2D.velocity = new Vector2 (xSpeed, ySpeed); } } コード

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

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

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

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

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

hogefugapiyo

2021/02/01 01:15

HeadCheckにGroundCheckコンポーネントはついてますか?
退会済みユーザー

退会済みユーザー

2021/02/01 01:23

ついてませんでした。つけたらうまくいきました。ありがとうございます。 なんかそのあたり不勉強でした。精進します。
hogefugapiyo

2021/02/01 01:42

解決してなによりです、自己解決とでもして質問をクローズしてあげてください。
退会済みユーザー

退会済みユーザー

2021/02/01 01:52

わかりました。ありがとうございました。
guest

回答1

0

ベストアンサー

HeadCheckにGroundCheckコンポーネントをつけて解決しました。

投稿2021/02/01 01:52

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問