Unity 实用教程之 三角形攻击范围的绘制
1、打开Unity,新建一个空工程,具体如下图
2、在场景中,添加几个物体,并且合理布局,具体如下图
3、在工程中,添加一个脚本,双击脚本或右键 Open C# Project 打开脚本,具体如下图
4、编辑脚本,其中脚本大概内容如下:首先获得 LineRenderer 组件,若没有该组件则添加该组件,然后通过计算点的位置,绘制出三角形区域,具体代码和代码内容如下图
5、脚本具体内容如下:
using UnityEngine;
public class DrawSector : MonoBehaviour {
// Update is called once per frame
void Update () {
if (Input.GetKeyDown(KeyCode.A)) {
ToDrawSector(transform, transform.localPosition, 60, 3);
}
}
private static LineRenderer GetLineRenderer(Transform t)
{
LineRenderer lr = t.GetComponent<LineRenderer>();
if (lr == null)
{
lr = t.gameObject.AddComponent<LineRenderer>();
}
lr.startWidth = 0.1f;
lr.endWidth = 0.1f;
return lr;
}
public static void DrawLine(Transform t, Vector3 start, Vector3 end)
{
LineRenderer lr = GetLineRenderer(t);
lr.positionCount = 2;
lr.SetPosition(0, start);
lr.SetPosition(1, end);
}
//绘制空心三角形
public static void ToDrawSector(Transform t, Vector3 center, float angle, float radius)
{
LineRenderer lr = GetLineRenderer(t);
int pointAmount = 100;//点的数目,值越大曲线越平滑
float eachAngle = angle / pointAmount;
Vector3 forward = t.forward;
lr.positionCount = pointAmount;
lr.SetPosition(0, center);
lr.SetPosition(pointAmount - 1, center);
for (int i = 1; i < pointAmount - 1; i++)
{
Vector3 pos = Quaternion.Euler(0f, -angle / 2 + eachAngle * (i - 1), 0f) * forward * radius + center;
lr.SetPosition(i, pos);
}
}
}
6、脚本编译正确后,回到Unity界面,把脚本挂载到物体 Cube 上,具体如下图
7、运行场景,按下 A 键,即可看到绘制出的三角形区域,具体如下图
8、到此,《Unity 实用教程之 三角形形范围的绘制》讲解结束,谢谢