Welcome

首页 / 软件开发 / C# / C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十一)

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十一)2010-02-23 博客园 深蓝色右手C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十一)制作精美的Mini地图①

用什么来承受未来几个月日思夜想的折磨?除了学习还是学习。

感慨了一翻,嘿嘿。本节我将为大家讲解如何为Silverlight游戏制作一个精美的Mini地图。Mini地图又分两种,一种是通常处于游戏窗口右上角的Mini雷达(导航)地图;另一种是全景Mini寻路地图。本节我先向大家讲解如何制作导航Mini雷达地图。此类地图在游戏中主要起到导航作用,即引导主角前行的方向,并且呈现出主角周围的各种对象,诸如:怪物、NPC、传送点等等;更多的,您还可以为之添加近距离寻路等高级功能。

首先是设计阶段,大家不妨先看一副图:

我为本教程游戏制作的Mini雷达地图包含大致几个功能:

1)显示/隐藏Mini地图功能。实现起来很简单,只需修改Mini雷达地图的身体呈现区域部分的Visibility即可。但是该功能却对整个游戏的性能起着巨大的调节作用。大家应该都清楚Mini雷达地图几乎相当于游戏窗口的一个缩小型副本,它更新且呈现的元素是很多的,特别是在对性能要求很大的WebGame中,这迫使我们必须为之安装个开关以控制当我们不需要看导航Mini地图时暂时将之关闭,从而停掉相关的逻辑运算及对象呈现;比如在大量杀怪中,Mini雷达地图基本没什么作用,这时我们就可以通过此按钮关闭它,节省出更多的CPU使游戏更加流畅,使玩家更能体验战斗的快感。

2)Mini地图缩放功能。这里我需要先向大家讲解一下我的Mini雷达地图制作及处理方法;当然,或许您还有比之更好的解决方案,望提出。至于我这个方案,则是建立在多种尝试之后筛选出来的个人感觉比较完美的处理方式。

第一步,我首先为每张地图制作一个等比例缩小N倍,且统一尺寸的地图图片。以我的Demo中第一个地图为例,该地图原始尺寸为4800*3600,那么我将之缩小8倍后尺寸为600*450;然后通过PS保存出30质量的图片容量只有30多K,同时它还可以做为下一节中我将为大家讲解到的Mini雷达地图图片源所用,一举两得。同样的,第二副地图尺寸为2400*1800,那么我将之缩小4倍后尺寸同样为600*450,依次类推。当然,如果不规则尺寸的地图也可以同样处理,只需将之缩小一定倍数,使之最终尺寸小于且接近600*450这个尺寸即可,至于600*450这个尺寸怎么来的?详见下节。

第二步,为Mini雷达地图添加配置,以第一副地图为例:

<MiniMap Scaling="8" MinScaling="1" MaxScaling="30" />

该配置描述了Mini雷达地图缩小的倍数,以及最小、最大值变动缩放限制范围。即对应上图中的X,以及右边的-、+按钮功能。