unity物体在屏幕上连线

it2025-09-08  8

public class communication: MonoBehaviour { public Transform gamaOBj1; public Transform imsge; public Transform gamaOBj2; Vector3 gamaOBj1ViewportPoint; Vector3 gamaOBj2ViewportPoint; float image_x; float image_y; public Material satMaterial; public Camera Camera2; void Start() { } void Update() { gamaOBj1ViewportPoint= Camera2.WorldToViewportPoint(gamaOBj1.position);//获取物体1世界坐标,并转为屏幕坐标 gamaOBj2ViewportPoint = Camera2.WorldToViewportPoint(gamaOBj2.position);//获取物体2世界坐标,并转为屏幕坐标。 imsge_x = imsge.position.x / Screen.width;//ui 坐标转为屏幕坐标。 imsge_y = imsge.position.y / Screen.height;//ui 坐标转为屏幕坐标。 } void OnPostRender() { if (!satMaterial) { Debug.LogError("请给材质资源赋值"); return; } satMaterial.SetPass(0); //设置该材质通道,0为默认值 GL.LoadOrtho();//设置绘制2D图像 GL.Begin(GL.LINES); //表示开始绘制,绘制类型为线段 GL.Vertex3(imsge_x, imsge_y, 0); GL.Vertex3(gamaOBj1ViewportPoint.x, gamaOBj1ViewportPoint.y, 0); GL.Vertex3(imsge_x, imsge_y, 0); GL.Vertex3(gamaOBj2ViewportPoint.x, gamaOBj2ViewportPoint.y, 0); GL.End(); }
最新回复(0)