Unity3D 运用GL屏幕画图(阴阳师画符)
运用GL屏幕画图基本效果
阴阳师火了之后,市面上很多游戏又多了一个模块——画符抽卡,可以通过使用Unity自带GL类来实现这个功能,上面一篇博客Unity研究 GL中有关于GL类的初步解析。今天直接来分析需求 看看阴阳师画符抽卡是怎么实现的:
1,绘图——鼠标按下进行拖拽,在屏幕中留下鼠标轨迹。
2,存图——松开鼠标,绘制的图片按比例映射到Texture上。
1,通过一个集合List<Vector3> allPoints存储鼠标在屏幕上经过的轨迹(视图坐标系)
if (Input.GetMouseButton(0)){Vector3 tmpView = Camera.main.ScreenToViewportPoint(Input.mousePosition);allPoints.Add(tmpView);}
2,遍历集合,将集合中具有前后关系的点连接起来(点动成线)
/// <summary>/// 使用GL画线的回调/// </summary>public void OnRenderObject(){//创建材质球CreateLineMaterial();//激活第一个着色器通过(在本例中,我们知道它是唯一的通过)lineMaterial.SetPass(0);//设置正交投影GL.LoadOrtho();// 开始画线 在Begin——End之间写画线方式GL.Begin(GL.LINES);GL.Color(Color.red);for (int i = 1; i < allPoints.Count; i++){Vector3 tmpFront = allPoints[i - 1];Vector3 tmpBack = allPoints[i];GL.Vertex(tmpFront);GL.Vertex(tmpBack);}GL.End();//渲染出栈}
3,按照比例映射到图片上
public void Texture(){//像素根据比例映射图片paintText = new Texture2D(300, 400);for (int i = 1; i < allPoints.Count; i++){Vector3 tmpFront = allPoints[i-1];Vector3 tmpBack = allPoints[i];float frontX = paintText.width * tmpFront.x;float frontY = paintText.height * tmpFront.y;float backX = paintText.width * tmpBack.x;float backY = paintText.height * tmpBack.y;//两点之间的缝隙用插值连起来for (int j = 0; j < 100; j++){int tmpX =(int)Mathf.Lerp(frontX, backX, j / 100.0f);int tmpY =(int)Mathf.Lerp(frontY, backY, j / 100.0f);paintText.SetPixel(tmpX, tmpY, Color.red);}//paintText.SetPixel(xx, yy, Color.red);}paintText.Apply();
}
Unity3D 运用GL屏幕画图(阴阳师画符)相关推荐
- unity3d 使用GL 方式画线
这个是画线部分 private Vector3[] linePoints;public int m_LineCount;public int m_PointUsed;public void Rende ...
- 【Unity实战100例】Unity屏幕画线,Unity屏幕画图HSJ绘画工具
这个工具,可以自定义线的粗细,可以自定义线的颜色,可以设置背景桌面的颜色,可以单线撤销也可以清楚屏幕,可以画虚线实线折线. 目录 一:制作画线工具 1.初始化左上右下点 2.绘制逻辑
- 计算机思维流程图怎么做,迅捷画图怎么画思维导图和流程图
迅捷画图怎么画思维导图和流程图 2018-11-14 11:32:44 0点赞 4收藏 0评论 迅捷画图是一个功能强大的在线绘图工具,可以在线绘制思维导图.流程图.网络拓扑图.组织结构图.工作流程图. ...
- mysql 5.5.48源码安装_centos5.5+apache2.2.15+mysql5.1.48+php5.2.13 编译安装 --by 画符抓鬼撰聊斋.doc...
centos5.5+apache2.2.15+mysql5.1.48+php5.2.13 编译安装 --by 画符抓鬼撰聊斋.doc 还剩 5页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲 ...
- 运行时绘制Gizmo——关于unity3D的GL图像库的使用(非常详细)
转载来源:https://www.cnblogs.com/JLZT1223/p/6094404.html ps: 想了解一下GL库,但是都没有什么好的资料. 好不容易找到一个详细的博客,格式还全乱,阅 ...
- 1.1.2-学习Opencv与MFC混合编程之---画图工具 画直线 画圆 画矩形
源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961685 画图工具 1. 画直线 Ø 增加'直线'菜单项,建立类向导: Ø 对CXX ...
- 海龟画图----python画美队盾牌
之前上选修课老师首先讲的就是海龟画图,后来还是稍微研究一下了的,海龟画图其实还是蛮有趣的,随便改一些数据可以画出意料之外的惊喜. 开发环境 :win10 + pycharm 需要的包就是turtle, ...
- 新手如何使用迅捷画图来画思维导图
导语: 新手想要了解怎么画思维导图,首先就是要学会临摹思维导图模板,熟悉各种专业思维导图的样式.然而,这只是它的形,此时的思维导图是没有"灵魂"的,所以我们还需要在这个形里面注入& ...
- 迅捷画图怎样画思维导图、流程图
迅捷画图是一个在线绘制思维导图.流程图的工具,很多人在绘制思维导图或者流程图时都停在了第一步,因为不知如何下手,今天就告诉大家如何彻底解决思维导图.流程图不会画的难题. 如何使用迅捷画图画思维导图.流 ...
- 可以直接在屏幕上面涂画的pointofix安装及汉化
一.软件下载 官方网址https://www.pointofix.de/ 二.进入下载页面,需要下载安装文件和语言包两个文件 三.网站还提供了一个语言设置小程序,但我没用 四.安装 1.打开<p ...
最新文章
- 定义AI,麦卡锡、图灵、乔丹...我们听谁的?
- PB的setfilter()和modify()一些不为人知的技巧
- 去除Activity的标题栏以及全屏显示
- 使用glbindbuffers产生访问冲突_预防IP地址冲突的应对方案,你知道吗?
- inline-block,一个奇怪的问题:中间div掉下来
- 收藏一个Excel甘特图模板
- 临床阅片有新招!华为与维卓致远发布三维影像阅片系统
- 惯性导航算法(三)-方向余弦矩阵(下)
- CDN月95计费方式
- apk编辑器找Android,教你用安卓神器APK编辑器去除程序广告
- 云端系统服务器是什么,云端服务器是什么-云端服务器介绍
- 网站浏览器崩溃原因分析
- mvc 从客户端 中检测到有潜在危险的 Request 值
- 打印skb内容的一小段代码
- RTSP 协议详细介绍
- 妻子和鱼----海子
- 不想做CEO的程序员不是好码农?
- 【Python百日进阶-数据分析】Day137 - plotly旭日图:go.sunburst()实例
- 解决vmware中虚拟机打不开,报错Intel VT-x禁用的问题
- php scada,监控系统SCADA软件—KingSCADA
热门文章
- 服务器3D场景建模(三):体素场景(一)
- 我只用了3步,实现了一个逼真的3D场景渲染
- 专门记java语言单词app_赞Android背单词软件app源码(非常实用)
- html制作页面书签的步骤,网页制作基础教程(二)html标签
- smartbi试用体验
- 【操作系统-Windows】组件服务 DCOM 配置编辑安全属性
- 【技术文档】jeecg3.8-maven 开发环境搭建入门
- Pocket PC、Pocket PC phone、Smartphone的区别
- P5960 【模板】差分约束算法
- 用python画钢铁侠_秒变钢铁侠,这个暑假,用 Python 让自己成为超级英雄!