【unity实用技能】Unity画一条带箭头的线

提供函数方便使用

    private void DrawArrow(Vector2 from, Vector2 to, Color color)
    {
        Handles.BeginGUI();
        Handles.color = color;
        Handles.DrawAAPolyLine(3, from, to);
        Vector2 v0 = from - to;
        v0 *= 10 / v0.magnitude;
        Vector2 v1 = new Vector2(v0.x * 0.866f - v0.y * 0.5f, v0.x * 0.5f + v0.y * 0.866f);
        Vector2 v2 = new Vector2(v0.x * 0.866f + v0.y * 0.5f, v0.x * -0.5f + v0.y * 0.866f); ;
        Handles.DrawAAPolyLine(3, to + v1, to, to + v2);
        Handles.EndGUI();
    }

原文地址:http://blog.51cto.com/13638120/2103459

时间: 2024-10-16 05:03:35

【unity实用技能】Unity画一条带箭头的线的相关文章

【小松教你手游开发】【unity实用技能】角色头部跟随镜头旋转

这个在端游上比较场景,在角色展示的时候,当摄像头在角色身边上下左右旋转时,角色头部跟随镜头旋转.如天涯明月刀等. 这个在手游上比较少见,不过实现也没什么区别. 首先一般情况下,找到模型的头部节点,直接用lookAt指向camera就可以了,不过一般需求不会这么简单. 比如说,超过头部扭动极限,头部需要插值回到原始点:当镜头从外部回到极限内,需要插值回来.这时候lookat就没法使用. 更有情况,头部本身坐标系不在世界坐标轴上, 可能旋转了90多或者输出的prefab就是歪的等等,这些情况都没办法

【小松教你手游开发】【unity实用技能】在GameObject前画一条线

在项目中有时候需要在scene里划线方面检查 这里面有两点,划线和人物正前方的计算 划线用LineRanderer 人物正前方是 go.transform.forward + go.transform.position 人物的坐标加上人物的正前方方向 (我一开始死脑筋的时候想着正前方就go.transform.forward 不就是人物的正前方吗,但是如果不加上自己的坐标,它只是一个方向,也就是这个坐标只是相对于原点的方向,加上坐标才是你要的点) using System.Collections

【小松教你手游开发】【unity实用技能】根据上一个GameObject坐标生成的tips界面

开发游戏,特别是mmo手游的时候经常需要开发的一个需求是,点击某个装备,在它附近的位置生成一个tips界面,介绍装备功能和各种信息. 像上面红色框框里的这个. 这个主要的问题是 根据点击的GameObject对应生成这个详情界面时,详情界面位置需要合理摆放(不能显示不到,不能遮挡等) 基本的思路是, 首先找到GameObject的position, 把手机屏幕大概分成四个象限,知道这个GameObject大概在这个屏幕的哪个象限(左上,左下,右上,右下) 根据象限来判断详情界面应该在GameOb

【小松教你手游开发】【unity实用技能】InvalidOperationException: out of sync

在unity开发中出现这个bug. 在网上查了下是在迭代器中直接修改引起的.c#是不允许你在迭代器中直接修改. 改了一下确实解决. 原本是这样 [csharp] view plain copy public void Run() { foreach (var item in timerDict) { if (null != item.Value) { item.Value.Run(); } } } 改成这样: [csharp] view plain copy public void Run()

【小松教你手游开发】【unity实用技能】Unity内存申请和释放(转自tnqiang)

这里先声明转自http://www.jianshu.com/p/b37ee8cea04c 1.资源类型 GameObject, Transform, Mesh, Texture, Material, Shader, Script和各种其他Assets. 2.资源创建方式 静态引用,在脚本中加一个public GameObject变量,在Inspector面板中拖一个prefab到该变量上,然后在需要引用的地方Instantiate: Resource.Load,资源需要放在Assets/Reso

【unity实用技能】unity3d 陀螺仪控制camera移动旋转

https://docs.unity3d.com/ScriptReference/Gyroscope.html unity 官方文档就很清楚,只有一点要注意: 所有教程都教你怎么用 input.gyro.attitude 但是这个表示的是空间中的位置,首先你是想做像王者荣耀开头晃动摄像机的效果,需要把上个位置记录下来,每次相减获得偏移值. 而更大的问题是,这个空间值可能会有突然转成负数的情况 所以其实一点都不好用. 建议用 m_gyro.rotationRateUnbiased 这个直接给你偏移

【unity实用技能】unity编辑器工具之加载预制(Prefab)和场景(Scene)

在unity里做打包或者帮策划美术做工具的时候经常会需要把Prefab拉出来或者场景打开做检验工作 其实这个在上一篇在ui打包的文章里有提到,不过重点不同,上篇重点是打包,这篇的重点是把里面的一个小知识点拉出来讲一讲 接下来就讲讲两者分别怎么做 一.把预制Prefab拉出来 就是像我们平时把预制拉到这个地方 1.首先是获取你选中的那个Prefab(如果是有其他需求,比如默认目录下的所有文件等,就不这样处理,不过大同小异) GameObject[] selectGameObjects = Sele

【小松教你手游开发】【unity实用技能】unity发包优化(android一键发包)

unity本身的发包其实还是挺方便的,国外的游戏基本都用unity本身的发包. 但在国内的游戏有这么多渠道,这个迭代的速度的情况下,就需要一套更高效的发包方式. 接下来讲具体步骤,如果你们项目有热更新会更麻烦一点. 发包优化的目标是做到一键发包,一般发包机会是一台独立的机子,所以 第一步,更新svn 第二步,配置打包信息.根据不同渠道接入不同sdk 第三步,build apk. 因为我们项目暂时还是测试,所以还没做根据不同渠道接入不同sdk.具体思路是写个xml,在上面填写各种配置信息,版本号,

【小松教你手游开发】【unity实用技能】线性差值计算实现

其实这个unity本身就有的函数Mathf.Lerp(),为什么还要自己实现呢. 有一个原因就是这个函数返回的是float型,float型如果数字非常大,转出int时会有精度丢失,也就是转出来的值不对. 而且非常简单. 看下公式 public int Lerp(int a,int b,int v) { return (int)(a - (0 - v) / (0 - 1) * (a - b)): } 原文地址:http://blog.51cto.com/13638120/2084965