unity框选游戏目标的实现方法

unity框选游戏目标的实现方法

ID:34726681

大小:352.54 KB

页数:14页

时间:2019-03-10

unity框选游戏目标的实现方法_第1页
unity框选游戏目标的实现方法_第2页
unity框选游戏目标的实现方法_第3页
unity框选游戏目标的实现方法_第4页
unity框选游戏目标的实现方法_第5页
资源描述:

《unity框选游戏目标的实现方法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、学IT技能上我学院网woxueyuan.comUnity框选游戏目标的实现方法相信大家在打魔兽争霸类游戏的时候,需要框选多个游戏目标,然后来进行指挥作战,这种方法是如何实现的你嗯,在Unity里实现,其实很简单,有两个前提:1.画的方框始终是在屏幕空间进行的,而屏幕空间其实就是摄像机的视锥空间的投射了,不需要另外计算视锥。2.unity摄像机内建的功能,可以方便的把屏幕坐标和世界坐标互换。这样最简单的画框选物体就简化成了:1.用GL在屏幕空间动态画框。2.把备选对象的transform.position用camera.WorldToScreenPoiont变换成屏幕坐标

2、。3.判断这些position的点是否落在画的方框之内,如果是就把对象切换到画边框的层,呈现选中效果。一.屏幕动态画框这个过程相对简单就是在鼠标按下的时候记下鼠标位置,然后在鼠标移动时在当前鼠标位置和按下的位置之间画一个方形就行了。usingUnityEngine;usingSystem.Collections;学Unity上我学院:www.woxueyuan.com学IT技能上我学院网woxueyuan.compublicclassDrawRectangle:MonoBehaviour{publicColorrectColor=Color.green;privateV

3、ector3start=Vector3.zero;//记下鼠标按下位置privateMaterialrectMat=null;//画线的材质不设定系统会用当前材质画线结果不可控privatebooldrawRectangle=false;//是否开始画线标志//UsethisforinitializationvoidStart(){rectMat=newMaterial("Shader"Lines/ColoredBlended"{"+"SubShader{Pass{"+"BlendSrcAlphaOneMinusSrcAlpha"+"ZWriteOffCullOff

4、Fog{ModeOff}"+"BindChannels{"+"Bind"vertex",vertexBind"color",color}"+"}}}");//生成画线的材质学Unity上我学院:www.woxueyuan.com学IT技能上我学院网woxueyuan.comrectMat.hideFlags=HideFlags.HideAndDontSave;rectMat.shader.hideFlags=HideFlags.HideAndDontSave;}voidUpdate(){if(Input.GetMouseButtonDown(0)){drawRe

5、ctangle=true;//如果鼠标左键按下设置开始画线标志start=Input.mousePosition;//记录按下位置}elseif(Input.GetMouseButtonUp(0)){drawRectangle=false;//如果鼠标左键放开结束画线}}voidOnPostRender(){//画线这种操作推荐在OnPostRender()里进行而不是直接放在Update,所以需要标志来开启if(drawRectangle){学Unity上我学院:www.woxueyuan.com学IT技能上我学院网woxueyuan.comVector3end=In

6、put.mousePosition;//鼠标当前位置GL.PushMatrix();//保存摄像机变换矩阵if(!rectMat)return;rectMat.SetPass(0);GL.LoadPixelMatrix();//设置用屏幕坐标绘图GL.Begin(GL.QUADS);GL.Color(newColor(rectColor.r,rectColor.g,rectColor.b,0.1f));//设置颜色和透明度,方框内部透明GL.Vertex3(start.x,start.y,0);GL.Vertex3(end.x,start.y,0);GL.Vertex3

7、(end.x,end.y,0);GL.Vertex3(start.x,end.y,0);GL.End();学Unity上我学院:www.woxueyuan.com学IT技能上我学院网woxueyuan.comGL.Begin(GL.LINES);GL.Color(rectColor);//设置方框的边框颜色边框不透明GL.Vertex3(start.x,start.y,0);GL.Vertex3(end.x,start.y,0);GL.Vertex3(end.x,start.y,0);GL.Vertex3(end.x,end.y,0);G

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。