unity初心者です。ゲーム画面をなぞると線が引けるというプログラムを作ろうと思い、ネットで下記のコードを見つけたので参考にしたいのですが、わからないところがあるので質問させていただきます。
まず、obj.transform.right = (endPos - startPos).normalized; の部分です。このコードがベクトルを表してるということは調べてわかったのですが、具体的にそのベクトルがどのように使われているのかがいまいち理解できません。
次に、obj.transform.parent = this.transform; この部分の意味もよくわかりません。このthis.transformはスクリプトをアタッチしてるゲームオブジェクトのtransformオブジェクトという認識であっていますか?そこらへんも含めて解説していただけるとありがたいです。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Line : MonoBehaviour 6{ 7 public GameObject linePrefab; 8 public float lineLength = 0.2f; 9 public float lineWidth =0.5f; 10 11 private Vector3 touchPos; 12 13 void Start() 14 { 15 16 } 17 18 void Update() 19 { 20 drawLine(); 21 } 22 23 void drawLine() 24 { 25 26 if (Input.GetMouseButtonDown(0)) 27 { 28 touchPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); 29 touchPos.z = 0; 30 } 31 32 if (Input.GetMouseButtonUp(0)) 33 { 34 35 Vector3 startPos = touchPos; 36 Vector3 endPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); 37 endPos.z = 0; 38 39 if ((endPos - startPos).magnitude > lineLength) 40 { 41 GameObject obj = Instantiate(linePrefab, transform.position, transform.rotation) as GameObject; 42 obj.transform.position = (startPos + endPos) / 2; 43 obj.transform.right = (endPos - startPos).normalized; //大きさ1のベクトル 44 45 obj.transform.localScale = new Vector3((endPos - startPos).magnitude, lineWidth, 1); 46 47 obj.transform.parent = this.transform; 48 49 touchPos = endPos; 50 } 51 } 52 } 53} 54
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/02 08:39
2021/06/02 12:43
2021/06/02 13:11