博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用GL画出人物的移动路径
阅读量:5108 次
发布时间:2019-06-13

本文共 2346 字,大约阅读时间需要 7 分钟。

注意:用Debug画的线会存在穿透问题

没啥好解释的,直接看代码:

using UnityEngine;using System.Collections;using System.Collections.Generic; /*  * 找不到设置线宽的方法,目前的解决方法就是用画矩形代替画线来实现线的粗细  *//// /// 必须将此脚本放在摄影机上才能看到绘画内容,DebugDraw可以不用,但DebugDraw画的内容/// 只能在编辑模式下看得到。/// [RequireComponent(typeof(Camera))]public class DrawTrack: MonoBehaviour{    ///     /// 画笔的材质    ///     public Material Material;    ///     /// 绘画该目标的移动路径    ///     public Transform Target;    ///     /// 画笔平滑度    ///     public float Smooth = 1;    ///     /// 是否也在编辑器里绘画出线    ///     public bool DebugDraw = true;    ///     /// 存放移动路径的点的集合    ///     private List
path; ///
/// 目标的最后一个移动点 /// private Vector3 lastPosition; void Start() { if (Material == null) { Debug.LogError("请先赋予该脚本 Material !!"); } if (Target == null) { Debug.LogError("请设置目标"); } path = new List
(); lastPosition = Target.position; } void Update() { if (Vector3.Distance(Target.position, lastPosition) > Smooth) { path.Add(Target.position); lastPosition = Target.position; } } ///
/// GL绘图必须在这个函数中进行 /// void OnPostRender() { GL.PushMatrix(); Material.SetPass(0); // 若要绘制2D线段,则取消注释GL.LoadOrtho(); //GL.LoadOrtho(); GL.Begin(GL.LINES); /*******在此处进行绘画*********/ DrawLines(path.ToArray()); GL.End(); GL.PopMatrix(); } private void DrawLine(Vector3 start, Vector3 end) { GL.Vertex3(start.x, start.y, start.z); GL.Vertex3(end.x, end.y, end.z); if (DebugDraw) { Debug.DrawLine(start, end, Color.red, 1); } } private void DrawLines(Vector3[] points) { if (points.Length == 0) { return; } for (int i = 0; i < points.Length - 1; ++i) { var start = points[i]; var end = points[i + 1]; GL.Vertex3(start.x, start.y, start.z); GL.Vertex3(end.x, end.y, end.z); if (DebugDraw) { Debug.DrawLine(start, end, Color.red, 1); } } } public void ClearLine() { path.Clear(); } }

 

转载于:https://www.cnblogs.com/jeason1997/p/4805825.html

你可能感兴趣的文章
Android源码:(一) 安卓2.1到4.4操作系统通用的Actionbar实现的tab导航例子。
查看>>
Ubuntu 下安装 CCNx0.8.2
查看>>
UVA-227 Puzzle(模拟)
查看>>
基于ruby的watir自动化测试 笔记一
查看>>
FTP服务器FileZilla Server配置及使用方法
查看>>
python radix算法实现
查看>>
globals和locals的区别
查看>>
delphi 动态数组
查看>>
JDK动态代理和CGLIB的区别
查看>>
js 日期证有效性验的通用方法
查看>>
PHP日常排错
查看>>
2142134
查看>>
【软件需求工程与建模 - 小组项目】第6周 - 成果展示3 - 软件设计规格说明书V4.1...
查看>>
Delphi子窗体随主窗体大小而变化
查看>>
JavaBean与xml互转的方法详解
查看>>
html中css三种常见的样式选择器
查看>>
AttributeError: 'dict' object has no attribute 'iteritems'
查看>>
Angular-file-upload文件上传插件的使用
查看>>
VB拖放(随记,未完)
查看>>
修复vbox的共享文件夹的符号链接错误
查看>>