Unity 实用教程之 绘制实体扇形范围攻击线

 时间:2026-02-14 06:37:47

1、打开Unity,新建一个空工程,具体如下图

Unity 实用教程之 绘制实体扇形范围攻击线

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

Unity 实用教程之 绘制实体扇形范围攻击线

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

Unity 实用教程之 绘制实体扇形范围攻击线

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

Unity 实用教程之 绘制实体扇形范围攻击线

Unity 实用教程之 绘制实体扇形范围攻击线

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 上,具体如下图

Unity 实用教程之 绘制实体扇形范围攻击线

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

Unity 实用教程之 绘制实体扇形范围攻击线

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

  • 如何利用Axure RP 8制作出按钮控制文本框显示
  • Unity 动画添加关键帧的多种方法
  • Unity 获取系统当前时间,并格式化显示
  • 剑网3指尖江湖十全大补汤怎么做
  • 如何设置unity的最大过渡速度
  • 热门搜索
    云南西双版纳旅游攻略 南昌旅游社 大连旅游介绍 温州旅游社 黄花城水长城旅游区 西安旅游论坛 浙江宁波旅游 太原旅游团 延安旅游网 湖北在线旅游网