Unity 实用教程之 绘制实体扇形范围攻击线
1、打开Unity,新建一个空工程,具体如下图

2、在场景中,添加 Plane 和 Cube,并且合理布局,具体如下图

3、在工程中,添加一个脚本,双击脚本或右键 Open C# Project 打开脚本,具体如下图

4、脚本代码和代码解释如下图


5、脚本的具体内容如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DrawSectorSolid : MonoBehaviour {
public static GameObject go;
public static MeshFilter mf;
public static MeshRenderer mr;
public static Shader shader;
// Update is called once per frame
void Update () {
if(Input.GetKeyDown (KeyCode.A)) {
ToDrawSectorSolid (transform, transform.localPosition, 60, 3);
}
}
private static GameObject CreateMesh(List<Vector3> vertices)
{
int[] triangles;
Mesh mesh = new Mesh();
int triangleAmount = vertices.Count - 2;
triangles = new int[3 * triangleAmount];
//根据三角形屈裁的个数,来计算绘制三角形的顶点顺序(索引)
//顺序必须为顺时针或驾追择者逆时针
for (int i = 0; i < triangleAmount; i++)
{
triangles[3 * i] = 0;//固定第一个点
triangles[3 * i + 1] = i + 1;
triangles[3 * i + 2] = i + 2;
}
if (go == null)
{
go = new GameObject("mesh");
go.transform.position = new Vector3(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;
return go;
}
//绘制实心扇形 public static void ToDrawSectorSolid(Transform t, Vector3 center, float angle, float radius)
{
int pointAmount = 100;//点的数目,值越大曲线越平滑
float eachAngle = angle / pointAmount;
Vector3 forward = t.forward;
List<Vector3> vertices = new List<Vector3>();
vertices.Add(center);
for (int i = 1; i < pointAmount - 1; i++)
{
Vector3 pos = Quaternion.Euler(0f, -angle / 2 + eachAngle * (i - 1), 0f) * forward * radius + center;
vertices.Add(pos);
}
CreateMesh(vertices);
}
}
6、脚本编译正确后,回到Unity界面,把脚本挂载到物体 Cube 上,具体如下图

7、运行场景,按下 A 键,即可看到绘制出的三角形区域,具体如下图

8、到此,《Unity 实用教程之 绘制实体扇形范围攻击线》讲解结束,谢谢