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

Q&A

解決済

1回答

459閲覧

unity クリック箇所にオブジェクトを出したいです。

chashuo

総合スコア2

0グッド

0クリップ

投稿2024/05/03 05:50

0

0

実現したいこと

クリックした箇所にオブジェクトを生成したいと思っています。

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

unityで、2Dにおいてクリックした場所にオブジェクトを生成するスクリプトを作っています。しかし下記のようなエラーが出てしまいオブジェクトが生成されません。ヒエラルキーにも表示されません。

エラーメッセージ

error

1NullReferenceException: Object reference not set to an instance of an object 2start.Update () (at Assets/start.cs:32)

該当のソースコード

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.SceneManagement; 5 6public class start : MonoBehaviour 7{ 8 float mas = 0; 9 Rigidbody rigid2d; 10 Vector2 startPos ; 11 Vector3 startPos2; 12 private float speed=5; 13 public GameObject Player; 14 private GameObject gene; 15 16 17 void Start() 18 { 19 this.rigid2d = GetComponent<Rigidbody>(); 20 this.speed = 100; 21 rigid2d.constraints= RigidbodyConstraints.FreezeAll; 22 23 } 24 25 void Update() 26 { 27 28 // マウスの動きと反対方向に発射される 29 if (Input.GetMouseButtonDown(0)) 30 { 31 this.startPos = Input.mousePosition; 32 Vector3 startPos2 = UnityEngine.Camera.main.ScreenToWorldPoint(Input.mousePosition); 33 gene=Instantiate(Player, startPos2, Quaternion.identity); 34 35 } 36 37 else if (Input.GetMouseButtonUp(0)) 38 { 39 rigid2d.constraints = RigidbodyConstraints.None; 40 Vector2 endPos = Input.mousePosition; 41 float dis = Vector2.Distance(startPos, endPos); 42 float speed = dis * 3f; 43 const float min = 30f; 44 const float max = 400f; 45 speed = Mathf.Clamp(speed, min, max); 46 Vector2 startDirection = -1 * (endPos - startPos).normalized; 47 this.rigid2d.AddForce(startDirection * speed); 48 mas = 2; 49 } 50 51 52 // テスト用:スペースキー押下で停止 53 if (Input.GetKeyDown(KeyCode.Space)) 54 { 55 this.rigid2d.velocity *= 0; 56 } 57 58 59 // Spaceキーを離すと動き出す 60 //if(Input.GetKeyUp(KeyCode.Space)) { 61 // 62 // this.speed = 100.0f; 63 // this.rigid2d.AddForce(transform.up * speed); 64 //} 65 66 } 67 68 void FixedUpdate() 69 { 70 71 this.rigid2d.velocity *= 0.995f; 72 73 } 74 75}

試したこと・調べたこと

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

オブジェクトがアクティブになっているかどうかも確認しました。

補足

特になし

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

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

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

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

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

fiveHundred

2024/05/03 05:55

MainCamera(ただのCameraではなくMainCameraタグが付けられたもの)は存在しますか?
chashuo

2024/05/03 05:57

MainCameraを一度消してしまい普通のCameraしか存在していないです。
guest

回答1

0

ベストアンサー

UnityEngine.Camera.mainは、MainCamera(ただのCameraではなくMainCameraタグが付けられたもの)が入っており、存在しない場合はnullになります。
対象のCamera一つにMainCameraタグをつけて、MainCamera扱いにしてみてください。

投稿2024/05/03 06:27

fiveHundred

総合スコア10499

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

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

chashuo

2024/05/03 06:40

回答ありがとうございます。 試したところ問題が解決しました! ベストアンサーに選ばせていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問