前提・実現したいこと
Unityでアクションゲームを作っています。
Zボタンを押したときにプレイヤー(player_right3)から弾のPrefab(lightPrefab)が発射されるというプログラムを書きたいと思っています。
プレイヤー player_right3
弾のPrefab lightPrefab
Zボタンを押したときにプレイヤーから弾が発射されるプログラム lightGenerator
上のプログラムをアタッチした空のオブジェクト lightGenerator
弾の動きに関するプログラム lightContoroller
発生している問題・エラーメッセージ
Zボタンを押したときにプレイヤーから弾が発射されるというプログラム(lightGenerator)を空のオブジェクト(lightGenerator)に、弾の動きに関するプログラム(lightController)を弾のPrefab(lightPrefab)に、弾のPrefab(lightPrefab)とプレイヤー(player_right3)を弾が発射されるプログラム(lightGenerator)にアタッチしたところエラーが発生しました。
あと、ゲームを再生するとInspector内のLight Generator(Script)のLight Prefabの中身が消えてしまいます。
ArgumentException: The Object you want to instantiate is null. UnityEngine.Object.CheckNullArgument (System.Object arg, System.String message) (at C:/buildslave/unity/build/Runtime/Export/UnityEngineObject.bindings.cs:383) UnityEngine.Object.Instantiate[T] (T original) (at C:/buildslave/unity/build/Runtime/Export/UnityEngineObject.bindings.cs:274) lightGenerator.Update () (at Assets/lightGenerator.cs:23)
該当のソースコード
//lightGenerator(Zボタンを押したときにプレイヤーから弾が発射されるというプログラム) using System.Collections; using System.Collections.Generic; using UnityEngine; public class lightGenerator : MonoBehaviour { // Start is called before the first frame update public GameObject lightPrefab; public GameObject player; void Start() { lightPrefab = GameObject.Find("lightPrefab"); player = GameObject.Find("player_right3"); } // Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.Z)) { GameObject go = Instantiate(lightPrefab) as GameObject; go.transform.position = player.transform.position; } } } //lightController(弾の動きに関するプログラム(上のプログラムとは別のファイルに保存されています)) using System.Collections; using System.Collections.Generic; using UnityEngine; public class lightController : MonoBehaviour { // Start is called before the first frame update float delta = 0; void Start() { } // Update is called once per frame void Update() { transform.Translate(0.1f, 0, 0); delta += Time.deltaTime; if (delta > 0.5f) { Destroy(gameObject); delta = 0; } } }
試したこと
Console画面でエラーをダブルクリックするとVisualStudioが起動し、「GameObject go = Instantiate(lightPrefab) as GameObject;」のところに飛んだので、いろいろ試してみたのですが、解決しませんでした。
補足情報(FW/ツールのバージョンなど)
windows10
unity Version 2018.4.17f1 Personal
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/06 16:31
2020/08/08 15:30