MMO小地图实现方式
来源:互联网 发布:淘宝卖霉菌龟头炎药品 编辑:程序博客网 时间:2024/05/21 11:28
面试遇到关于小地图的制作问题
实现方式如下
* NGUI minimap的插件
* 根据场景,制作一张俯视截图,做坐标的相对运算。
* 在主角的头顶挂一个摄像机,用renderTexture,实时渲染。
一 NGUI minimap的插件
1.导入该插件后,在Mesh Version->Prefabs中,将NJG MiniMap(2D)拖入到场景中;
2.在Hierarchy中点击MiniMap(位于NJG MiniMap(2D) -> UI Root -> Camera -> Anchor -> MiniMap),在Inspector中不勾选UIMini Map On GUI -> Zoom Settings -> MouseWheel ,将Zoom值调为最小;
3.给游戏主角和NPC各添加脚本NJGMap Item(Script),设置Marker Type属性:主角设为2DMe,NPC设为OtherPlayer;
4.此时运行游戏看到小地图有毛边;若想去掉毛边,重新设置Mask为一个矩形的Texture;
5.运行游戏可得到基本样式的小地图了;
6.注意:小地图这个窗口会自动刚好俯视到场景中所有物体所以应该让所有物体在地图的范围中,这样窗口范围和地图范围刚好吻合;
如图:(上方为小地图,下方为场景地图;小地图中靛色圆点为主角,绿色箭头为NPC,圆点和绿色箭头来自插件中)
二 通过角色在原地图中的位置比例来确定角色在小地图中的位置
[csharp] view plain copy print?public class Map : MonoBehaviour { public Texture map ;//小地图图片、地图的俯视图; public Texture playerTexture ;//在小地图中代表角色的标识 float cubePosX=0 ;//角色在小地图中的位置x float cubePosY=0 ;//角色在小地图中的位置y public GameObject player; public GameObject plane;//场景中的地图 float planeWidth; float planeHeight; float scale = 1.0f;//缩放比 void Start() { planeWidth = plane.GetComponent<MeshFilter>().mesh.bounds.size.x * (plane.transform.localScale.x ); planeHeight = plane.GetComponent<MeshFilter>().mesh.bounds.size.z * (plane.transform.localScale.z); } void Update() { //通过场景地图中的位置比例(player.transform.position.x/planeWidth)来确定角色在小地图中的位置 cubePosX = map.width*player.transform.position.x/planeWidth; cubePosY = 159-map.height*player.transform.position.z/planeHeight; } void OnGUI () { GUI.DrawTexture(new Rect( 0, 0, map.width*scale, map.height*scale), map); GUI.DrawTexture(new Rect((cubePosX+6) * scale, (cubePosY-34) * scale, 5, 5), playerTexture); } }
三 场景投射型小地图
* 在主角的头顶挂一个摄像机相机保持和角色在同一XZ坐标(写个很简单的同步位置的脚本)
* 设置Camera渲染在单独的Layer上,同时主Camera渲染取消该层
* 创建材质球,使用一个带遮罩的shader。
* 创建RenderTexture,并设置到camera以及添加到材质球里。
* 在UI界面里,为小地图UITexure中添加该材质球。
* 调整合适的位置和大小
* 使用quad为角色添加在小地图的显示图标
* 面试有遇到说可以使用mesh的小地图制作方式,有知道的朋友请留下大概的解决思路。*
参考内容:Unity3d-游戏中的小地图制作
- MMO小地图实现方式
- 小地图实现方式
- mmo地图重叠
- mmo地图相关MapService
- Unity 实现小地图的两种方式
- MMO即时战斗:地图角色同步管理和防作弊实现
- 小地图的实现
- 游戏地图实现方式
- MMO手游地图同步方案总结
- mmo手游地图同步总结
- MMO服务器端 - 实现 MultiThead Socket
- MMO即时战斗:技能实现
- unity3d 小地图实现思路
- unity小地图的实现
- 高德地图小实现
- 一款已上市MMO手游地图同步方案总结
- 一款已上市MMO手游地图同步方案总结
- 一款已上市MMO手游地图同步方案总结
- 前端面试之cookie
- Linux下安装Git
- hadoop-31
- 一元函数在区间上的形心(质心)公式的推导
- 【JavaScript】04变量、作用域及内存
- MMO小地图实现方式
- 抽象类和接口
- HDOJ 2037 今年暑假不AC(贪心算法)
- Unity资源制作要求
- 【一】web自动化测试<selenium2+python>环境搭建+脚本测试执行
- 基础数据结构02:队列
- 算法优化:rgb向yuv的转化最优算法,快得让你吃惊!
- 占位-安装虚拟机
- MongoDB Replica Sets(复制集)部署