最新文章
Cocos2d-x游戏开发实例详解7:对象释放时机
03-25 13:59
Cocos2d-x游戏开发实例详解6:自动释放池
03-25 13:55
Cocos2d-x游戏开发实例详解5:神奇的自动释放
03-25 13:49
Cocos2d-x游戏开发实例详解4:游戏主循环
03-25 13:44
Cocos2d-x游戏开发实例详解3:无限滚动地图
03-25 13:37
Cocos2d-x游戏开发实例详解2:开始菜单续
03-25 13:32
ngui小地图
最近在项目开发中,涉及到 NGUI 小地图相关内容。经过一番研究,我将自己的研究成果分享给大家,也希望大家能分享更好的方法,让小地图的实现更加完善。
在游戏或应用开发中,有句话很关键:没有最好的办法,只有最适合的手段。对于制作 NGUI 小地图,我们追求“快准狠”的原则。“快”即制作速度要快;“准”指定位要精准;“狠”则是尽可能节省资源和运算。接下来,我将介绍两种制作 NGUI 小地图的方式:NGUI 插件式小地图和场景坐标投射式小地图。
NGUI 插件式小地图
这种方式制作小地图的速度相当快。具体步骤如下:
- 导入插件并渲染场景贴图:导入 NGUI 插件,将整个场景渲染成一张贴图,然后把这张贴图制作成 NGUI 的 atlas。(若对这些 NGUI 操作不熟悉,请自行搜索相关资料。)
- 创建小地图专用 Panel:在 NGUI 的 2D UI 中创建一个小地图专用的 panel,并打开 UIPanel 中的 Clipping 选项,无论是硬切还是软切,只要能实现裁剪即可。这里附上本人小地图的 Panel 设置,具体设置可自行研究。
- 添加代表场景地图的 Sprite:在该 Panel 中创建一个 Sprite,它将作为场景地图。需要将这个 Sprite 的缩放的 ZY 和场景的 XZ 长度对应起来,即场景的大小决定了 Sprite 的 XY 缩放大小,这是一个偷懒的关键技巧。
- 放置定位角色并调试:在 Panel 的正中央放置一个用于定位角色的对象,然后逐步调试对位,使游戏中角色的位置与小地图上的位置相对应。
- 编写代码实现地图运动:真正处理地图运动的代码主要在 17 行和 18 行,仅需两行代码就能完成定位。将这段代码挂载到小地图 Sprite 上,再把角色对象赋值给代码中的 Player 属性,这样就能看到一个酷炫的小地图了。
场景投射型小地图
这种方式在 Unity3D 的官方 DEMO BootCamp 中得到了很好的应用。运行该 DEMO 时,我们可以在左上角看到一个圆形小地图雷达。具体实现步骤如下:
- 准备渲染场景贴图:和插件式小地图一样,需要一张渲染的场景贴图作为地图。
- 创建带孔面片:制作一个带圆形孔(孔的形状可根据个人喜好决定)的面片,该面片需要使用带有 Transparent Alpha_Cancel 的 shader 的材质球,并且将场景贴图作为材质球的贴图。
- 设置摄像机:需要一个用于查看地图的摄像机,使摄像机与角色保持在同一 XZ 坐标,可以编写一个简单的同步位置脚本实现这一功能。同时,让带孔面片始终与摄像机保持相同位置。运行程序后,就能看到小地图随着角色移动而变化。
- 添加方位指示:如果需要实现类似 BootCamp 中带方位指示的效果,只需再创建一个带有透明通道的面片,并为其添加自己喜欢样式的指针贴图即可。由于有官方 DEMO 可供参考,这里就不再详细赘述,大家可以自行学习研究。
以上就是两种常见的 NGUI 小地图实现方式,希望对大家有所帮助。