Код: Выделить всё
void Update ()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray, out hit, 1000))
{
if(mouseDown)
{
if (pathList.Count == lineNum)
{
GameObject x = new GameObject();
x.AddComponent();
LineRenderer lr = x.GetComponent();
lr.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
lr.receiveShadows = false;
lr.SetWidth(0.4f, 0.4f);
lr.material = m;
List path = new List();
lrList.Add(lr);
pathList.Add(path);
pathList[lineNum] = new List();
finalPath.Add(hit.point);
}
if(Vector3.Distance(finalPath[finalPath.Count-1], hit.point) >5)
{
finalPath.Add(hit.point);
}
pathList[lineNum].Add(hit.point);
lrList[lineNum].SetVertexCount(pathList[lineNum].Count);
lrList[lineNum].SetPosition(pathList[lineNum].Count - 1, hit.point + new Vector3(0, 0.1f, 0));
hitPoints.Add(hit.point);
}
}
вот мой код для объекта-последователя:
Код: Выделить всё
public class FollowLine : MonoBehaviour {
LineGenerator ln;
Vector3[] path;
int i = 0;
int y = 0;
void Start ()
{
ln = FindObjectOfType();
}
void Update ()
{
path = ln.finalPath.ToArray();
if (path.Length != 0 && Vector3.Distance(transform.position, path[i]) > 1)
{
transform.position = Vector3.MoveTowards(transform.position, path[i], Time.deltaTime*3);
}
else if(path.Length > i+1)
{
i++;
}
if(ln.pathList.Count != 0 && Vector3.Distance(transform.position, ln.pathList[0][0]) < 1)
{
ln.pathList[0].RemoveAt(ln.pathList.Count-1);
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/341 ... -flight-co
Мобильная версия