我知道有一些函数,比如lineRenderer等,但我想在场景中使用两个点(Vector3形式)创建一条直线。我不想使用任何键或使用鼠标绘制线条,我只是想在触发某个事件时或在我点击播放按钮后看到场景中的线条。
任何人都可以帮助我吗?
答案 0 :(得分:3)
//For creating line renderer object
lineRenderer = new GameObject("Line").AddComponent<LineRenderer>();
lineRenderer.startColor = Color.black;
lineRenderer.endColor = Color.black;
lineRenderer.startWidth = 0.01f;
lineRenderer.endWidth = 0.01f;
lineRenderer.positionCount = 2;
lineRenderer.useWorldSpace = true;
//For drawing line in the world space, provide the x,y,z values
lineRenderer.SetPosition(0, new Vector3(x,y,z)); //x,y and z position of the starting point of the line
lineRenderer.SetPosition(1, new Vector3(x,y,z)); //x,y and z position of the starting point of the line
答案 1 :(得分:0)
如果你想要3D空间中的一行,请尝试创建一个LineRenderer,在此处示例:http://rockonflash.wordpress.com/2010/04/17/how-to-do-lasers-in-unity3d/
这里的文档: http://docs.unity3d.com/Documentation//Components/class-LineRenderer.html
对于2D线(onGUI),请尝试:
function OnGUI () {
GUIUtility.ScaleAroundPivot (Vector2(0.5, 0.5), Vector2(328.0, 328.0));
GUI.Label (Rect (200, 200, 256, 256), textureToDisplay);
}
此讨论中还有其他选项: http://forum.unity3d.com/threads/17066-How-to-draw-a-GUI-2D-quot-line-quot
答案 2 :(得分:0)
另一个可能适合您需求的选项是在场景中使用Gizmo。因为Gizmos应用在一个单独的矩阵中,你可以用它们做很多有趣的事情。
基本:
void OnDrawGizmos ()
{
Gizmos.color = new Color(1f, 0f, 0f, 0.5f);
Gizmos.DrawLine(positionA, positionB);
}
会帮助你。然而,我最近一直在使用的东西是偏移Gizmo矩阵,然后在单位空间中渲染所有内容。
void OnDrawGizmos ()
{
Matrix4x4 rotationMatrix = Matrix4x4.TRS(transform.position, transform.rotation, positionA - positionB);
Gizmos.matrix = rotationMatrix;
Gizmos.DrawWriteCube(Vector3.zero, Vector3.one);
}
两者都很有趣,但是当你开始尝试表示旋转或需要偏移的内容时,第二个实例可以在以后帮助你。
答案 3 :(得分:0)
好的,我已经通过使用LineRenderer来解决这个问题了:
var line: GameObject=GameObject.Find("/LineRenderer");
fence = Instantiate(line,Pos,Rotation);
fence.setPosition(0,p1);
fence.setPosition(1,p2);
感谢您上面的所有答案