Unity 实用教程 之 绘制实体2D矩形攻击范围线
1、打开Unity,新建一个空工程,具体如下图
2、在场景中添加 Cube,并把视图改为2D,布局如下图
3、在工程中,新建一个脚本,命名为 DrawRectangleSolid2D,并右键脚本 Open C# Project 打开,具体如下图
4、在打开的脚本上编写代码,具体代码和代码说明如下图
5、脚本具体内容如下:usingSystem.Collections;usingSystem.Collections.Generic;usin爿讥旌护gUnityEngine;publicclassDrawRectangleSolid2D:MonoBehaviour{publicstaticGameObjectgo; publicstaticMeshFiltermf; publicstaticMeshRenderermr; publicstaticShadershader;//Usethisforinitialization voidStart(){ } //Updateiscalledonceperframe voidUpdate(){if(Input.GetKeyDown(KeyCode.A)){ ToDrawRectangleSolid2D(transform,1,3,4); } }privatestaticGameObjectCreateMesh(List<Vector3>vertices) { int[]triangles; Meshmesh=newMesh();inttriangleAmount=vertices.Count-2; triangles=newint[3*triangleAmount];//根据三角形的个数,来计算绘制三角形的顶点顺序(索引) //顺序必须为顺时针或者逆时针 for(inti=0;i<triangleAmount;i++) { triangles[3*i]=0;//固定第一个点 triangles[3*i+1]=i+1; triangles[3*i+2]=i+2; }if(go==null) { go=newGameObject("mesh"); go.transform.position=newVector3(0,0.1f,0);//让绘制的图形上升一点,防止被地面遮挡 mf=go.AddComponent<MeshFilter>(); mr=go.AddComponent<MeshRenderer>(); shader=Shader.Find("Unlit/Color"); }mesh.vertices=vertices.ToArray(); mesh.triangles=triangles; mf.mesh=mesh; mr.material.shader=shader; mr.material.color=Color.red;returngo; }//绘制实心长方形2D //distance指的是这个长方形与Transformt的中心点的距离 publicstaticvoidToDrawRectangleSolid2D(Transformt,floatdistance,floatlength,floatwidth) { List<Vector3>vertices=newList<Vector3>();if(IsFacingRight(t)) { Vector3forwardMiddle=newVector3(t.position.x+distance,t.position.y); vertices.Add(forwardMiddle+newVector3(0,width/2)); vertices.Add(forwardMiddle+newVector3(length,width/2)); vertices.Add(forwardMiddle+newVector3(length,-width/2)); vertices.Add(forwardMiddle+newVector3(0,-width/2)); } else { //看不到颜色但点击mesh可以看到形状 Vector3forwardMiddle=newVector3(t.position.x-distance,t.position.y); vertices.Add(forwardMiddle+newVector3(0,width/2)); vertices.Add(forwardMiddle+newVector3(-length,width/2)); vertices.Add(forwardMiddle+newVector3(-length,-width/2)); vertices.Add(forwardMiddle+newVector3(0,-width/2)); }CreateMesh(vertices); }publicstaticboolIsFacingRight(Transformt) { if(t.localEulerAngles.y>0)returnfalse; elsereturntrue; }}
6、脚本编译正确,回到Unity界面,把脚本赋给 Cube,具体如下图
7、运行场景,然后按下 A 键,实体2D矩形范围攻击线绘制出来,具体如下图
8、到此,《Unity 实用教程 之 绘制实体2D矩形攻击范围线》讲解结束,谢谢