zoukankan      html  css  js  c++  java
  • Unity中 生成箭头(2D)

      1 /*
      2 /// 功能: 绘制箭头
      3 /// 时间:
      4 /// 版本:
      5 */
      6 
      7 using System.Collections;
      8 using System.Collections.Generic;
      9 using UnityEngine;
     10 using UnityEngine.UI;
     11 
     12 [AddComponentMenu("UI/Effects/Arrow")]
     13 [RequireComponent(typeof(Image))]
     14 [ExecuteInEditMode]
     15 public class Arrow : BaseMeshEffect
     16 {
     17     public enum DirectionType
     18     {
     19         Left,
     20         Right,
     21         Up,
     22         Down,
     23     }
     24 
     25     public DirectionType directionType;
     26 
     27     public float width = 1;
     28     public float height = 1;
     29     public float angle;
     30     public Color color;
     31 
     32     private Image image;
     33 
     34     protected override void Start()
     35     {
     36         image = this.GetComponent<Image>();
     37     }
     38 
     39     public override void ModifyMesh(VertexHelper vh)
     40     {
     41         vh.Clear();
     42 
     43         List<Vector3> vertexList = new List<Vector3>();
     44         Vector3 v0=Vector3.zero;
     45         Vector3 v1=Vector3.zero;
     46         Vector3 v2=Vector3.zero;
     47         Vector3 v3=Vector3.zero;
     48         Vector3 v4 = Vector3.zero;
     49 
     50         //有5个点"
     51         switch (directionType)
     52         {
     53             case DirectionType.Left:
     54                 v1 = new Vector3(-width, 0);
     55                 v2 = new Vector3(-width - height / Mathf.Tan(angle * Mathf.PI / 180), height / 2);
     56                 v3 = new Vector3(-width, height);
     57                 v4 = new Vector3(0, height);
     58                 break;
     59             case DirectionType.Right:
     60                 v1 = new Vector3(width, 0);
     61                 v2 = new Vector3(width + height / Mathf.Tan(angle * Mathf.PI / 180), height / 2);
     62                 v3 = new Vector3(width, height);
     63                 v4 = new Vector3(0, height);
     64                 break;
     65             case DirectionType.Up:
     66                 v1 = new Vector3(width, 0);
     67                 v2 = new Vector3(width,height);
     68                 v3 = new Vector3(width/2, height+height/Mathf.Tan(angle*Mathf.PI/180));
     69                 v4 = new Vector3(0, height);
     70                 break;
     71             case DirectionType.Down:
     72                 v1 = new Vector3(width, 0);
     73                 v2 = new Vector3(width, -height);
     74                 v3 = new Vector3(width / 2, -height - height / Mathf.Tan(angle * Mathf.PI / 180));
     75                 v4 = new Vector3(0, -height);
     76                 break;
     77             default:
     78                 break;
     79         }
     80 
     81         vertexList.Add(v0, v1, v2, v3, v4);
     82 
     83         for (int i = 0; i < vertexList.Count; i++)
     84         {
     85             vh.AddVert(vertexList[i], color, Vector3.zero);
     86         }
     87 
     88         vh.AddTriangle(0, 1, 2);
     89         vh.AddTriangle(0, 1, 3);
     90         vh.AddTriangle(1, 2, 3);
     91         vh.AddTriangle(2, 3, 4);
     92         vh.AddTriangle(3, 4, 0);
     93         vh.AddTriangle(0, 1, 4);
     94     }
     95 
     96     private void Update()
     97     {
     98         image.SetVerticesDirty();
     99     }
    100 }
    View Code
  • 相关阅读:
    AI生万物,新世界的大门已敞开
    荣耀10带来AI版WPS,玩转潮酷新功能
    P20 旅行助手,从未有过的至尊私人导游服务!
    如何成为快手尬舞王?HUAWEI HiAI了解一下!
    golang中的接口实现(二)
    golang中的接口实现(一)
    new~mac os 给终端命令写alias(及其他常用命令)及软连接
    Java面试题精选
    干货 unity小贴士
    js数组插入指定位置元素,删除指定位置元素,查找指定位置元素算法
  • 原文地址:https://www.cnblogs.com/nanyang0310/p/14822005.html
Copyright © 2011-2022 走看看