首页 > 解决方案 > Unity C#:从游戏对象(3D)到画布(屏幕空间 - 相机)的线渲染器

问题描述

我的场景中有一个 3D 对象,我想在 3D 对象和一个具有渲染模式 Screen Space -Camera 的画布之间绘制一条线(LineRenderer)。

    Destination = GameObject.Find("MyCanvas").GetComponent<Canvas>().transform;
    lineRenderer = gameObject.AddComponent<LineRenderer>();
    lineRenderer.material = new Material(Shader.Find("Particles/Additive"));
    lineRenderer.SetColors(laserColor,laserColor);
    lineRenderer.SetWidth(initW,finalW);
    lineRenderer.SetVertexCount(2);
    Origin= GameObject.Find("MyObj");
    lineRenderer.SetPosition(0, Origin.position);
    lineRenderer.SetPosition(1, Destination.position);

如果对象是两个 3D 对象,则此代码运行良好。在我的情况下,3D 对象和画布之间的线是错误的。这条线会从 3D 对象转到错误的坐标。这显然是一个坐标问题。如何从 Canvas 中获取正确的坐标?我必须做某种转换?谢谢您的帮助。

标签: unity3d

解决方案


推荐阅读