今回投稿
サンプルだけ用意したので、試してみてどちらが合ってるか検討してみてください
#Gizmosの場合
下記スクリプトを適当なオブジェクトにアタッチして
インスペクターに2つオブジェクトをアタッチしてください。
2つのオブジェクトがおそらく白い線で結ばれると思います(色とかも変えられるので、そのへんは調べてみてください)
Gizmosなので、ゲームを実行していないときでも表示されます。
ゲームビューに表示されない場合は、ゲームビュー右上の「Gizmos」をクリックして有効化してください
Gizmosは基本的にゲーム開発者がデバッグ機能として見るものなのでビルドしたゲームに表示はされません。
cs
1using System.Collections;
2using System.Collections.Generic;
3using UnityEngine;
4
5public class Test : MonoBehaviour {
6
7 public GameObject obj1;
8 public GameObject obj2;
9
10 void OnDrawGizmos() {
11
12 if(obj1 != null && obj2 != null) {
13 Gizmos.DrawLine(obj1.transform.position, obj2.transform.position);
14 }
15 }
16}
#LineRendererの場合
下記スクリプトを適当なオブジェクトにアタッチして
インスペクターに2つオブジェクトをアタッチしてください。
ゲームを実行すると2つのオブジェクトがおそらく太いピンクの線で結ばれると思います。
※実行しないと表示されないのはコンポーネントをスクリプトで追加しているからです
自分でLineRendererのスクリプトを追加すればシーン画面でも見えると思います
LineRenderer
はその名が表す通り、線を引くためのコンポーネントです。
地点同士を線で結んでくれるんですが、物理演算などで動くオブジェクトの場合はUpdate
などで位置情報を更新してあげないといけません。
cs
1using System.Collections;
2using System.Collections.Generic;
3using UnityEngine;
4
5public class Test2 : MonoBehaviour {
6 public GameObject obj1;
7 public GameObject obj2;
8 LineRenderer myLineRend;
9
10 private void Start() {
11 // 自身にLineRendererを追加
12 myLineRend = gameObject.AddComponent<LineRenderer>();
13 }
14
15 // Update is called once per frame
16 void Update() {
17
18 if (obj1 != null && obj2 != null) {
19 myLineRend.SetPosition(0, obj1.transform.position);
20 myLineRend.SetPosition(1, obj2.transform.position);
21 }
22 }
23}
24
メリットとしては、複数の点を一度に線を引いてあげることもできます。
マテリアルなどが反映できるので、線のカスタマイズ性も高くてビルドしたゲームにも表示されます
#ボールをつなぐサンプル?
自分を中心に、他のオブジェクトと線を引くサンプルだとこんな感じでしょうか
cs
1using System.Collections;
2using System.Collections.Generic;
3using UnityEngine;
4
5public class Test2 : MonoBehaviour {
6 [SerializeField] private Rigidbody2D[] otherBalls;
7
8 void OnDrawGizmos() {
9 if(otherBalls.Length >= 1){
10 // 自分を中心として、他のボールと線をつなぐ
11 foreach (Rigidbody2D ball in otherBalls) {
12 Gizmos.DrawLine(transform.position, ball.transform.position);
13 }
14 }
15 }
16}
前回投稿
私の知る限りギズモ(Jointの接続を表す表示もコレに含まれる?)はあくまで開発のデバッグ用のため
ゲーム上(ビルドしたもの)に表示はできないと思います。
まず、こういったギズモはスクリプト側からデバッグ機能として表示させることができます
下記サイトではオブジェクト同士を線が出るようにしています。
画像で表示されているボール?同士をつなぐようなスクリプトを書けばとりあえず線は常に表示されるようになると思います。
【Unity】バネの動きを実現する3つの方法
https://nn-hokuson.hatenablog.com/entry/2017/05/23/204718
ただし、このギズモはあくまでもデバッグ機能なので
ビルドしたゲームの場合、表示されません。(エディタ上のゲームシーンなら表示させることができます)
なので、それを解決するために拡張を作っている人がいるので
そういうのを試してみると良いかもしれません
Gizmos
https://github.com/popcron/gizmos
線を出すだけならLineRenderer
とかでやってもいいかもしれません
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/09 04:43 編集
2021/12/09 07:42
2021/12/09 08:00
2021/12/09 08:06
2021/12/10 07:55 編集
2021/12/10 07:58
2021/12/10 10:29 編集
2021/12/13 07:48