我是Unity的初学者,我想单独创建一个个人项目。 我在场景中有两个Gameobjects,我在Unity上使用了LineRenderer和NavMesh代理来绘制两个游戏对象之间的路径,到目前为止,一切都很好,两个Gameobjects之间的Unity绘制路径。
Void Update (){
OnDrawGiz(GameObject.Find("Destination"));
}
void OnDrawGiz(GameObject obj)
{
Transform target = obj.GetComponent<Transform> ();
NavMeshAgent nav;
LineRenderer line;
nav= this.GetComponent<NavMeshAgent>();
if( nav == null || nav.path == null )
return;
line = this.GetComponent<LineRenderer>();
line.material = new Material( Shader.Find( "Sprites/Default" ) ) { color
= Color.yellow };
line.startColor=Color.yellow;
line.endColor = Color.green;
nav.SetDestination (target.position);
nav.isStopped=true;
var path = nav.path;
if (path.corners.Length < 2)
return ;
line.positionCount=path.corners.Length ;
//Draw the line
for( int i = 0; i < path.corners.Length; i++ )
{
line.SetPosition( i, path.corners[i] );
}
}
darw path 现在我的问题是如何放置和复制一个Gameobject,例如沿着这条路径或跨越这条路径的立方体? Here photo the result which i want to have
我使用C#脚本,Unity 5.6
答案 0 :(得分:1)
在for
之前或之后的最后一个line.SetPosition( i, path.corners[i] );
循环中,您可以使用path.corners [i]来获取沿线的顶点。只需使用Instantiate在那里实例化一个游戏对象。例如:
Instantiate(prefab, path.corners[i], Quaternion.identity);
查看此处的文档(第一个示例与您想要的类似):https://docs.unity3d.com/ScriptReference/Object.Instantiate.html