unity怎么绘制线条啊?求大神解答!!

unity怎么绘制线条啊?求大神解答!!,第1张

1. 打来Unity3D软件,创建工程如下图所示。

2. 创建下图所示的脚本文件,并将其拖拽到MainCamera对象下

3. 打开步骤2创建的脚本文件,编辑代码如下图所示。

using UnityEngine

using System.Collections

public class DrawLines : MonoBehaviour

{

public Material lineMat

public GameObject mainPoint

public GameObject[] points

//public void set

void DrawConnectingLines()

{

if (mainPoint &&points.Length >0)

{

// Loop through each point to connect to the mainPoint

foreach (GameObject point in points)

{

Vector3 mainPointPos = mainPoint.transform.position

Vector3 pointPos = point.transform.position

GL.Begin(GL.LINES)

lineMat.SetPass(0)

GL.Color(new Color(lineMat.color.r, lineMat.color.g, lineMat.color.b, lineMat.color.a))

GL.Vertex3(mainPointPos.x, mainPointPos.y, mainPointPos.z)

GL.Vertex3(pointPos.x, pointPos.y, pointPos.z)

GL.End()

}

}

}

void OnPostRender()

{

if (points.Length == 0)

return

DrawConnectingLines()

}

}

4. 在场景中创建如下图所示的球体作为测试

5. 为mainSphere球体创建材质并赋值给它,如下图所示。选中【MainSphere】->【MeshRender】->【Materials】

6. 同步骤5为其他的球添加材质如下图所示,LineMaterial设置如下。

7. 选中【MainCamera】下的脚本,为其变量赋值,如下图所示。

8. 运行结果如下图所示。源码下载地址见注意事项

第一步:给物体加rigidbody

第二部:创建一个emptyObject,拖入你的模型下面,并添加boxcollider,调整其属性,让box包围你的模型(如果一个boxcollider不够,还可以多建几个,总之让它尽可能的正好包围你的模型)

第三部:运行,调整就ok了

unity3d 中的碰撞时通过碰撞盒来检测的

不能用插件,也不能用LineRender,那我暂时只能想到这个两种方法了,但是个人还是推荐前面这俩个,比较方便。

1 用Cylinder弄成很细的那种做成预设物,需要显示的时候调出来,然后自己用代码调整位置缩放朝向就可以当做3D的线段来用,我个人用这个做过类似指示方向的东西,算是简单粗暴。

2 用GL方法,在摄像机上面挂载脚本,然后写OnPostRender()画线,貌似屏幕坐标和世界坐标需要换一下,所以要复杂一点了(有点像OpenGL的那种写法,我个人也只是泛泛了解)。

额外,如果你只是调试,Debug.DrawLine()还是很有用的。

GL示例

void GLdemo()

{

GL.PushMatrix()//保存当前Matirx

GL.LoadPixelMatrix()//设置pixelMatrix

GL.Begin(GL.LINES)

mat.SetPass(0)//mat是一个材质,注意shader的选择,否则颜色无效

GL.Color(Color.magenta)

GL.Vertex3(0, 0, 0)

GL.Vertex3(Screen.width, Screen.height, 0)

GL.End()

GL.PopMatrix()//读取之前的Matrix

}

void OnPostRender()

{

GLdemo ()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11934035.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存