2016-04-28 131 views
0

我正在使用谷歌纸板在Unity3d中创建一个VR应用程序,并且需要知道如何记录玩家所采取的路径(他们正在穿越迷宫)。有没有一种方法可以绘制用户所采用的路径(可能在控制台中;而不是在实际的游戏中并且对用户不可见)并将该路径保存为图像?Unity 3D:在游戏对象/记录路径背后绘制的游戏对象?

我需要保存的图像,或只是其中的玩家在游戏中去,这样我就可以通过电子邮件发送该视频线/数据的球员。什么是实现这一目标的最佳方式是什么?

+0

你看过[Trail Renderer](http://docs.unity3d.com/Manual/class-TrailRenderer.html)组件吗?显然[你可以设置淡入淡出时间为无穷](http://forum.unity3d.com/threads/trail-renderer-0-infinity.155445/),它应该让它记录一个对象在持续时间游戏。之后,您可以使用正交相机保存截图以获取它的图像。 – Serlite

回答

1

您需要玩家的路径List存储为Vector3。然后你可以使用LineRenderer绘制line.change的LineRenderer的vertext量与LineRenderer.SetVertexCount然后遍历所有的清单和List.Count改变LineRenderer与LineRenderer的位置。 SetPosition(loopIndex,playersPo [loopIndex])。

List<Vector3> playerPos = new List<Vector3>(); 

//Store players positions somewhere 
//playerPos.Add(pPos); 
//playerPos.Add(pPos); 
//playerPos.Add(pPos); 


Color red = Color.red; 
LineRenderer lineRenderer = gameObject.AddComponent<LineRenderer>(); 
lineRenderer.material = new Material(Shader.Find("Particles/Additive")); 
lineRenderer.SetColors(red, red); 
lineRenderer.SetWidth(0.2F, 0.2F); 

//Change how mant points based on the mount of positions is the List 
lineRenderer.SetVertexCount(playerPos.Count); 

for (int i = 0; i < playerPos.Count; i++) 
{ 
    //Change the postion of the lines 
    lineRenderer.SetPosition(i, playerPos[i]); 
} 
+0

有没有办法在画布上绘制LineRenderer?所以线条随着相机移动并始终与主相机的位置绑定在一起? – skyguy

+0

@skyguy是的,有一种方法。虽然它很复杂。这不是你原来的问题。你的问题是关于玩家的位置,与Canvas无关。你应该为Canvas创建一个新的问题。另外,你应该开始接受答案。你有很多问题没有选择答案。如果本指南提供了在原始问题中做你想做的事情,你可以简单地接受它作为答案。谢谢。 – Programmer

+0

谢谢。您能否在UI画布上使用LineRenderer指向正确的方向?你以前做过吗? – skyguy