![](/img/trans.png)
[英]How can I use linerenderer.startColor and linerenderer.startWidth?
[英]How can I put all the linerenderer test function under a gameobject parent?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DrawLines : MonoBehaviour
{
public LineRenderer lineRenderer;
public GameObject dotPrefab;
public string numbers;
private Vector3[] Positions;
// Start is called before the first frame update
void Start()
{
DrawNumber(0);
}
// Update is called once per frame
void Update()
{
if(Input.GetKeyDown("0"))
{
DrawNumber(0);
numbers = "0";
}
}
void DrawNumber(int number)
{
if (number == 0)
{
Zero();
}
}
private void Zero()
{
Positions = new Vector3[7] { new Vector3(0, 0, 0),
new Vector3(1, 0, 0),
new Vector3(1, -1, 0),
new Vector3(1,-2,0),
new Vector3(0,-2,0),
new Vector3(0,-1,0),
new Vector3(0,0,0)};
lineRenderer.positionCount = 7;
lineRenderer.SetPositions(Positions);
for (int i = 0; i < Positions.Length; i++)
{
var dot = Instantiate(dotPrefab);
dot.transform.position = Positions[i];
}
}
}
每次我按下鍵 0 時,它都會創建另一個零,但第一個問題是新零位於第一個零的相同位置,所以我想將所有零放在父級下,所以每次我按下 0 時,它都會創建一個新的零游戲對象子對象,並且新子對象的 position 會有所不同。
我想這就是你要找的。
private const float LETTER_WIDTH = 2f;
public LineRenderer lineRenderer;
public GameObject dotPrefab;
public string numbers;
public Transform WordAnchor;//parent object to set all the letters under
private int currentLetterIndex = 0;
private Vector3[] Positions;
// Start is called before the first frame update
void Start()
{
DrawNumber(0);
}
// Update is called once per frame
void Update()
{
if(Input.GetKeyDown("0"))
{
DrawNumber(0);
numbers = "0";
}
}
void DrawNumber(int number)
{
if (number == 0)
{
Zero();
}
}
private void Zero()
{
Positions = new Vector3[7] { new Vector3(0, 0, 0),
new Vector3(1, 0, 0),
new Vector3(1, -1, 0),
new Vector3(1,-2,0),
new Vector3(0,-2,0),
new Vector3(0,-1,0),
new Vector3(0,0,0)};
//Create a gameobject to parent the dots under
GameObject letter = new GameObject(currentLetterIndex.ToString() );
letter.transform.parent = WordAnchor;//parent the letter under the word
letter.transform.localPosition = new Vector3(currentLetterIndex * LETTER_WIDTH, 0f, 0f);//move an offset base on the index
LineRenderer lineRendererInstance = letter.AddComponent<LineRenderer>();
lineRendererInstance.positionCount = 7;
lineRendererInstance.SetPositions(Positions);
lineRendererInstance.useWorldSpace = false;
for (int i = 0; i < Positions.Length; i++)
{
var dot = Instantiate(dotPrefab, letter.transform);//parent the dot under the letter.
dot.transform.localPosition = Positions[i];//set the relative position.
}
++currentLetterIndex;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.