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

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

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

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

Visual Studio

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

Unity

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

Q&A

0回答

827閲覧

Unityパックマンゴースト エラー

krN10zura

総合スコア0

C#

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

Visual Studio

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

Unity

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

0グッド

0クリップ

投稿2021/10/01 02:37

編集2021/10/01 14:32

前提・実現したいこと

現在Unityにてこのサイト(https://nullsuke.com/)をもとにパックマンのゴーストを制作しており下に記載したようなエラーが出てしまいます。
ゴースト動くようにしたいのですが全く動きません。
エラーメッセージを何度か調べたのですが原因がわからずなかなか先に進めません。
Unityまだまだ初心者なのでどなたかご回答をよろしくお願いいたします。

発生している問題・エラーメッセージ

NullReferenceException: Object reference not set to an instance of an object AGhost.FixedUpdate () (at Assets/Script/AGhost.cs:125)

該当のソースコード

state = state.Excute();

C#
ソースコード

System; using System.Collections.Generic; using UnityEngine; public enum State { Wait, Init, Scatter, Chase, Scare, Return, Dead }; public abstract class AGhost : MonoBehaviour, IWarpable, IEatable { //待機間隔。 [SerializeField] protected float waitSpan; //巡回間隔。 [SerializeField] protected float scatterSpan; //追跡間隔。 [SerializeField] protected float chaseSpan; //[SerializeField] protected float scareTime; //パックマンに食べられたときの処理を登録。 public event EventHandler OnEaten; //パックマンを食べたときの処理を登録。 public event EventHandler OnEat; //ワープ時間。 private readonly float warpSpan = 1f; private readonly int score = 200; private SpriteRenderer sprite; private Animator animator; private IState state; private Wait wait; private float pauseEndTime; public int Score { get => score; } //初期化。 public void Initialize(Mover mover, GhostWaypointsData gwd, List<Vector2> nestWaypoints) { var states = new Dictionary<State, IState>(); pauseEndTime = 0; wait = new Wait(mover, states, animator, ToQueue(gwd.Wait), waitSpan); wait.OnTouch += (s, e) => OnEat(s, e); var init = new Init(mover, states, animator, ToQueue(gwd.Init)); init.OnTouch += (s, e) => OnEat(s, e); var scatter = new Scatter(mover, states, animator, ToQueue(gwd.Scatter), scatterSpan); scatter.OnTouch += (s, e) => OnEat(s, e); var chase = new Chase(mover, states, animator, sprite, chaseSpan); chase.OnTouch += (s, e) => OnEat(s, e); var scare = new Scare(mover, states, animator, sprite); scare.OnTouch += (s, e) => OnEaten(s, e); var ret = new Return(mover, states, animator, sprite, ToQueue(gwd.Scatter).Peek()); ret.OnTouch += (s, e) => OnEat(s, e); var dead = new Dead(mover, states, animator, ToQueue(nestWaypoints)); dead.OnTouch += (s, e) => { }; enabled = false; animator.enabled = false; } //ワープ。 public void Warp(Vector2 pos) { state.Warp(pos, warpSpan); } //パックマンに食べられる。 public void Eaten(Player pacman) { state = state.Eaten(); } public void Destroy() { Destroy(gameObject); } //恐慌。 public void Scare(float span) { state = state.Frighten(span); } //恐慌終了。 public void Calm() { state = state.Calm(); } public void Run() { wait.SetState(); state = wait; enabled = true; animator.enabled = true; } public void Pause(float span) { pauseEndTime = Time.fixedTime + span; } public void Stop() { enabled = false; animator.enabled = false; } private void Awake() { sprite = GetComponent<SpriteRenderer>(); animator = GetComponent<Animator>(); } //移動・アニメーション。 private void FixedUpdate() { if (Time.fixedTime < pauseEndTime) return; 125 エラー  state = state.Excute();   state.Animate(); } //List<Vector2>からQueue<Vector2>へ変換。 private Queue<Vector2> ToQueue(List<Vector2> waypoints) { var wps = new Queue<Vector2>(); waypoints.ForEach(w => { wps.Enqueue(w); }); return wps; } }

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

surface_0

2021/10/01 04:04

何を調べてみて、分かった事や分からない事を詳しく内容に記載してください。
bboydaisuke

2021/10/01 11:57

125とか数えるのはしんどいので、エラーが出た位置くらいはコード内に明記してもいいんじゃないでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問