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

質問編集履歴

4

本文の追記

2021/02/25 07:43

投稿

tuna-uniko
tuna-uniko

スコア10

title CHANGED
File without changes
body CHANGED
@@ -50,16 +50,4 @@
50
50
  使用環境はUnity2019.1.5.f1とVisual Studioになります。
51
51
  ・2021/02/23追記 エラーメッセージとエラーを起こしているコードの記載を行いました。
52
52
  ・2021/02/25追記 エラーメッセージについて、工場役スクリプトをもつオブジェクトを線生成スクリプトへpublic型GameObjectに設定し参照することで、両方同時に解決できました。しかしLineの終点位置をprefabの現在座標に設定し、常時始点と終点間にLineを生成する試みは上手く行っていません。
53
- ```C#
54
- //Start()内の処理
55
- //tesnotenagasi型の_tesnoにオブジェクトのnotemakerへアタッチしたスクリプト情報を設定
56
- _tesno = notemaker.GetComponent<tesnotenagasi>();
57
-
58
- //GameObject型longend2にtesnotenagasi内のmkを指定
59
- //(mkは始点オブジェクトを入れているpublic型GameObject)
60
- longend2 = _tesno.mk;
61
-
62
- //デバッグ用にlongend2(mkを入れられた状態)の位置を参照
63
- Debug.Log(longend2.transform.position.y); //0
64
- //Start()で指定したため、mkへ既にアタッチされていオブジェクトの座標(0,0,0)参照ている?
53
+ =>今回は始点生成位置がいつも5.7fだったため、そこから毎フレーム移動速度である0.11f引き算た数値をLineの終点にすればよかっただけでした。
65
- ```

3

コードの追加

2021/02/25 07:43

投稿

tuna-uniko
tuna-uniko

スコア10

title CHANGED
File without changes
body CHANGED
@@ -48,4 +48,18 @@
48
48
 
49
49
 
50
50
  使用環境はUnity2019.1.5.f1とVisual Studioになります。
51
- 2021/02/23追記 エラーメッセージとエラーを起こしているコードの記載を行いました。
51
+ 2021/02/23追記 エラーメッセージとエラーを起こしているコードの記載を行いました。
52
+ ・2021/02/25追記 エラーメッセージについて、工場役スクリプトをもつオブジェクトを線生成スクリプトへpublic型GameObjectに設定し参照することで、両方同時に解決できました。しかしLineの終点位置をprefabの現在座標に設定し、常時始点と終点間にLineを生成する試みは上手く行っていません。
53
+ ```C#
54
+ //Start()内の処理
55
+ //tesnotenagasi型の_tesnoにオブジェクトのnotemakerへアタッチしたスクリプト情報を設定
56
+ _tesno = notemaker.GetComponent<tesnotenagasi>();
57
+
58
+ //GameObject型longend2にtesnotenagasi内のmkを指定
59
+ //(mkは始点オブジェクトを入れているpublic型GameObject)
60
+ longend2 = _tesno.mk;
61
+
62
+ //デバッグ用にlongend2(mkを入れられた状態)の位置を参照
63
+ Debug.Log(longend2.transform.position.y); //0
64
+ //Start()で指定したため、mkへ既にアタッチされているオブジェクトの座標(0,0,0)を参照している?
65
+ ```

2

本文の追記・修正

2021/02/25 03:03

投稿

tuna-uniko
tuna-uniko

スコア10

title CHANGED
File without changes
body CHANGED
@@ -7,11 +7,13 @@
7
7
 
8
8
  ###実現したいこと・知りたいこと
9
9
  LineRendererが入っているオブジェクトを始点、長押し開始の音符を終点として線を引く時、Lineの終点座標に生成された長押し開始のオブジェクトの座標を常に指定できるようにしたいです。
10
- =>prefabの現在位置をLineRendererの座標指定に使用したい
10
+ =>Instantiateで生成したprefabの現在位置をLineRendererの座標指定に使用したい
11
11
  他のゲームを作る際にも役立つはずなので特に知りたいと思っています。
12
12
 
13
13
  ###試したこと
14
14
  ・Lineの始点終点を設定するスクリプトから音符を流すスクリプトで生成された始点オブジェクトを取得し、それの座標を参照する
15
+ エラー:NullReferenceException: Object reference not set to an instance of an object
16
+ =>Lineの始点終点を後ろに続く/*!*/のコードで設定できなくなりました
15
17
  ```C#
16
18
  (LineRendererをもつオブジェクト側の設定 Update()内処理)
17
19
  longend2 = _tesno.mkl;
@@ -24,12 +26,11 @@
24
26
  new Vector2(longend2.transform.position.x, longend2.transform.position.y)
25
27
  };
26
28
  //longend2(始点扱いオブジェクト)の座標を毎フレーム取得
27
-
28
- エラー:NullReferenceException: Object reference not set to an instance of an object
29
- =>Lineの始点終点を後ろに続く/*!*/のコードで設定できなくなりました
30
29
  ```
31
30
 
32
31
  ・逆にLineを設定しているスクリプトへ工場スクリプトから、始点扱いオブジェクトを生成した時にオブジェクト情報を移動させる
32
+ エラー:NullReferenceException: Object reference not set to an instance of an object
33
+ =>始点オブジェクトが無限生成されてしまう(始点オブジェクトの生成タイミングは曲開始からの時刻で始点生成スクリプトにて決められています)
33
34
  ```C#
34
35
  (ノーツ生成側の処理)
35
36
  _long.longend2 = mk;
@@ -43,9 +44,6 @@
43
44
  };
44
45
      //LineRendererをもつオブジェクトを線の始点とし、longend2を線の終点にする
45
46
      //longend2に生成された始点役オブジェクトの座標を指定し、移動に合わせて線も移動する
46
-
47
- エラー:NullReferenceException: Object reference not set to an instance of an object
48
- =>始点オブジェクトが無限生成されてしまう
49
47
  ```
50
48
 
51
49
 

1

コードの追加・エラーメッセージの追記

2021/02/23 01:49

投稿

tuna-uniko
tuna-uniko

スコア10

title CHANGED
File without changes
body CHANGED
@@ -12,8 +12,42 @@
12
12
 
13
13
  ###試したこと
14
14
  ・Lineの始点終点を設定するスクリプトから音符を流すスクリプトで生成された始点オブジェクトを取得し、それの座標を参照する
15
+ ```C#
16
+ (LineRendererをもつオブジェクト側の設定 Update()内処理)
17
+ longend2 = _tesno.mkl;
18
+ //_tesnoにノーツ生成スクリプトの情報を取得させ、public型のmklに生成されたオブジェクトを入れる
19
+ //GameObject型のlongend2にmklへ入れられた始点役オブジェクトの情報を追加する
20
+
21
+ /*!*/var positions2=new Vector3[]
22
+ {
23
+ new Vector2(gameObject.transform.position.x,gameObject.transform.position.y),
24
+ new Vector2(longend2.transform.position.x, longend2.transform.position.y)
25
+ };
26
+ //longend2(始点扱いオブジェクト)の座標を毎フレーム取得
27
+
28
+ エラー:NullReferenceException: Object reference not set to an instance of an object
15
- =>Null Referenceエラーが発生し、Lineの設定がスクリプトから変更できなかっため断念
29
+ =>Lineの始点終点を後ろに続く/*!*/のコードで設定できなくなりまし
30
+ ```
31
+
16
32
  ・逆にLineを設定しているスクリプトへ工場スクリプトから、始点扱いオブジェクトを生成した時にオブジェクト情報を移動させる
33
+ ```C#
34
+ (ノーツ生成側の処理)
35
+ _long.longend2 = mk;
17
- =>Null Referenceエラーが発し、今度は毎フレーム生されてまったため断念
36
+ //LineRendererの終点にInstantiateで生成したオブジェクトを指定するため、GameObject型のmkを指定
18
37
 
38
+ (LineRenderer側のUpdate関数内処理)
39
+ var positions2=new Vector3[]
40
+ {
41
+ new Vector2(gameObject.transform.position.x,gameObject.transform.position.y),
42
+ new Vector2(longend2.transform.position.x, longend2.transform.position.y)
43
+ };
44
+     //LineRendererをもつオブジェクトを線の始点とし、longend2を線の終点にする
45
+     //longend2に生成された始点役オブジェクトの座標を指定し、移動に合わせて線も移動する
46
+
47
+ エラー:NullReferenceException: Object reference not set to an instance of an object
48
+ =>始点オブジェクトが無限生成されてしまう
49
+ ```
50
+
51
+
19
- 使用環境はUnity2019.1.5.f1とVisual Studioになります。
52
+ 使用環境はUnity2019.1.5.f1とVisual Studioになります。
53
+ 2021/02/23追記 エラーメッセージとエラーを起こしているコードの記載を行いました。