回答編集履歴

2

補足

2021/12/09 08:06

投稿

hogefugapiyo
hogefugapiyo

スコア3302

test CHANGED
@@ -144,7 +144,47 @@
144
144
 
145
145
 
146
146
 
147
-
147
+ #ボールをつなぐサンプル?
148
+
149
+ 自分を中心に、他のオブジェクトと線を引くサンプルだとこんな感じでしょうか
150
+
151
+
152
+
153
+ ```cs
154
+
155
+ using System.Collections;
156
+
157
+ using System.Collections.Generic;
158
+
159
+ using UnityEngine;
160
+
161
+
162
+
163
+ public class Test2 : MonoBehaviour {
164
+
165
+ [SerializeField] private Rigidbody2D[] otherBalls;
166
+
167
+
168
+
169
+ void OnDrawGizmos() {
170
+
171
+ if(otherBalls.Length >= 1){
172
+
173
+ // 自分を中心として、他のボールと線をつなぐ
174
+
175
+ foreach (Rigidbody2D ball in otherBalls) {
176
+
177
+ Gizmos.DrawLine(transform.position, ball.transform.position);
178
+
179
+ }
180
+
181
+ }
182
+
183
+ }
184
+
185
+ }
186
+
187
+ ```
148
188
 
149
189
 
150
190
 

1

補足

2021/12/09 08:06

投稿

hogefugapiyo
hogefugapiyo

スコア3302

test CHANGED
@@ -1,3 +1,159 @@
1
+ 今回投稿
2
+
3
+ --
4
+
5
+ サンプルだけ用意したので、試してみてどちらが合ってるか検討してみてください
6
+
7
+
8
+
9
+ #Gizmosの場合
10
+
11
+ 下記スクリプトを適当なオブジェクトにアタッチして
12
+
13
+ インスペクターに2つオブジェクトをアタッチしてください。
14
+
15
+
16
+
17
+ 2つのオブジェクトがおそらく白い線で結ばれると思います(色とかも変えられるので、そのへんは調べてみてください)
18
+
19
+ Gizmosなので、ゲームを実行していないときでも表示されます。
20
+
21
+ ゲームビューに表示されない場合は、ゲームビュー右上の「Gizmos」をクリックして有効化してください
22
+
23
+
24
+
25
+ Gizmosは基本的にゲーム開発者がデバッグ機能として見るものなのでビルドしたゲームに表示はされません。
26
+
27
+
28
+
29
+ ```cs
30
+
31
+ using System.Collections;
32
+
33
+ using System.Collections.Generic;
34
+
35
+ using UnityEngine;
36
+
37
+
38
+
39
+ public class Test : MonoBehaviour {
40
+
41
+
42
+
43
+ public GameObject obj1;
44
+
45
+ public GameObject obj2;
46
+
47
+
48
+
49
+ void OnDrawGizmos() {
50
+
51
+
52
+
53
+ if(obj1 != null && obj2 != null) {
54
+
55
+ Gizmos.DrawLine(obj1.transform.position, obj2.transform.position);
56
+
57
+ }
58
+
59
+ }
60
+
61
+ }
62
+
63
+ ```
64
+
65
+
66
+
67
+ #LineRendererの場合
68
+
69
+ 下記スクリプトを適当なオブジェクトにアタッチして
70
+
71
+ インスペクターに2つオブジェクトをアタッチしてください。
72
+
73
+
74
+
75
+ ゲームを実行すると2つのオブジェクトがおそらく太いピンクの線で結ばれると思います。
76
+
77
+ ※実行しないと表示されないのはコンポーネントをスクリプトで追加しているからです
78
+
79
+  自分でLineRendererのスクリプトを追加すればシーン画面でも見えると思います
80
+
81
+
82
+
83
+ ``LineRenderer``はその名が表す通り、線を引くためのコンポーネントです。
84
+
85
+ 地点同士を線で結んでくれるんですが、物理演算などで動くオブジェクトの場合は``Update``などで位置情報を更新してあげないといけません。
86
+
87
+
88
+
89
+ ```cs
90
+
91
+ using System.Collections;
92
+
93
+ using System.Collections.Generic;
94
+
95
+ using UnityEngine;
96
+
97
+
98
+
99
+ public class Test2 : MonoBehaviour {
100
+
101
+ public GameObject obj1;
102
+
103
+ public GameObject obj2;
104
+
105
+ LineRenderer myLineRend;
106
+
107
+
108
+
109
+ private void Start() {
110
+
111
+ // 自身にLineRendererを追加
112
+
113
+ myLineRend = gameObject.AddComponent<LineRenderer>();
114
+
115
+ }
116
+
117
+
118
+
119
+ // Update is called once per frame
120
+
121
+ void Update() {
122
+
123
+
124
+
125
+ if (obj1 != null && obj2 != null) {
126
+
127
+ myLineRend.SetPosition(0, obj1.transform.position);
128
+
129
+ myLineRend.SetPosition(1, obj2.transform.position);
130
+
131
+ }
132
+
133
+ }
134
+
135
+ }
136
+
137
+
138
+
139
+ ```
140
+
141
+ メリットとしては、複数の点を一度に線を引いてあげることもできます。
142
+
143
+ マテリアルなどが反映できるので、線のカスタマイズ性も高くてビルドしたゲームにも表示されます
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+ 前回投稿
152
+
153
+ --
154
+
155
+
156
+
1
157
  私の知る限りギズモ(Jointの接続を表す表示もコレに含まれる?)はあくまで開発のデバッグ用のため
2
158
 
3
159
  ゲーム上(ビルドしたもの)に表示はできないと思います。