参考视频:
unity如何做任务指引轨迹(带路)?_哔哩哔哩_bilibili
1.在场景中新建空对象MissionGuide,子对象分别是空对象Line和Trial
2.空对象Line下添加Line Renderer
在这里可以更改它的宽度,颜色,对齐方式选择变换z
3,空对象Trial下添加Trial Renderer
4,在场景中随意添加一些3D对象球体,作为生成路径的路线
5.Missionguide脚本如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MissionGuide : MonoBehaviour
{
public Transform[] lineTarget;
public Transform[] trailTarget;
public LineRenderer lineRenderer;
public TrailRenderer trialRenderer;
public float trailSpeed;
// Start is called before the first frame update
void Start()
{
StartCoroutine(DelayForKeepUpdate());
}
private IEnumerator DelayForKeepUpdate()
{
WaitForSeconds waitTimes = new(1 / 30);
int index = 1;
Vector3 currentDirection;
while (true)
{
yield return waitTimes;
UpdateLineRenderer();
Vector3[] trailPoints = new Vector3[trailTarget.Length];
for(int i = 0; i < trailTarget.Length; i++)
{
trailPoints[i] = trailTarget[i].position;
trailPoints[i].y = 0.1f;
}
Vector3 currentTarget = trailPoints[index];
currentDirection = (currentTarget - trialRenderer.transform.position).normalized;
Vector3 nextPos = trialRenderer.transform.position + currentDirection * trailSpeed;
Vector3 nexToTargetVector = (currentTarget - nextPos).normalized;
if (currentDirection != nexToTargetVector)
{
nextPos = currentTarget;
index++;
}
trialRenderer.transform.position = nextPos;
if (index >= trailTarget.Length)
{
index = 1;
yield return new WaitForSeconds(trialRenderer.time);
trialRenderer.emitting = false;
trialRenderer.transform.position = trailPoints[0];
trialRenderer.Clear();
trialRenderer.emitting = true;
continue;
}
}
}
private void UpdateLineRenderer()
{
Vector3[] linePoints = new Vector3[lineTarget.Length];
for (int i = 0; i < lineTarget.Length; i++)
{
linePoints[i] = lineTarget[i].position;
linePoints[i].y = 0.1f;
}
lineRenderer.positionCount = linePoints.Length;
lineRenderer.SetPositions(linePoints);
}
// Update is called once per frame
}
6,将要生成的Line路线和Trial路线的小球分别设置好位置并拖入作为路线参数
线段渲染器和Trial Renderer分别是MissionGuide下的Line和Trial
Trial Speed是该Trial的生成速度,可按照需求自行调整
7,效果如图所示