技术开发 频道

开发Silverlight游戏教程:地图遮罩层

   【IT168技术文档】

    转载自:深蓝色右手的博客

    前面的章节主要针对地图表现层进行讲解。通常来说,简单的游戏光有它就足够了;但是为了达到更加真实的光影效果,模拟真实的虚拟世界,我们还得继续在地图上下大工夫。本节将就如何实现地图中的遮罩层,即物体对角色的遮挡进行详细讲解。

    首先我们来看一张比较完善的地图应该包含哪些内容:
 

    从上图可以看到,我将一张地图引擎结构分成了3层(难道这就是传说中的地图三层架构?汗一个先。。。)。中间的图片代表地图的表现层,也就是我们视觉上直接看到的地图界面。关于它,前面的章节中已有非常多的讲解,这里就不再累述了。接着我们再看最下面那张:地图底层,它由黑白两大颜色组成,似乎还有一圈黄色在右小角呢。有的朋友觉得它很奇怪,似乎摸不着头脑,好象和地图没啥关系吧?其实只要将它和第二张图进行分析比较就会发现,它上面的黑色就是地图中障碍物区域,白色则为可以通行的区域,那黄色呢??还有朋友要问了:前面的章节不是有讲A*寻路吗?通过Matrix[]数组来构建障碍物不是很完美吗?那为什么还要多此一举再为每张地图构造一张同比例的障碍物底层图呢?我只想告诉广大的朋友们:它的作用可大了,尤其尤其在目前的Silverlight游戏开发中,它的作用及拓展性可谓承前启后,用科学发展观的话讲就是:面向对象的思维开发Silverlight游戏。太多太多的悬念,才能有更多的期待,那么关于这张神秘底层图的讲解,请听下回分析。

    读者声音:同志,你也太假了吧,这样就讲完这节啦?BS你一下。

    作者:安啦,怎么可能嘛,这叫倒叙懂不?(啥叫倒叙其实俺也不太。。。?嘿嘿)

    不瞎扯啦,还剩一张图没讲呢,对啦,本节的主角就是它了:地图遮罩层。

    首先来讲讲实现原理吧:我们可以从地图表现层(下文直接就称之地图好了)中看到,遮挡人物的只有一棵树。那么我们想要在此地图上实现遮罩效果,首先就得用Photoshop将这棵树给截出来,当然越精确越好,然后将它单独保存成一张背景透明的图片(通常Windows桌面RPG游戏中会将所有的遮挡物统一规格,例如50*50一张(如大于则分两张、三张…等等),然后将全部遮挡物图片放进一个庞大的二进制文件中,显然这对于Silverlight基于网页的游戏是不容许的),如果一张地图上有多个遮挡物,同样将他们都截取出来然后依次命名保存。准备工作做完后,我们就需要将遮罩层的图片放在顶层,将地图放在底层,人物等放在中间层。最后分别将遮罩层的所有图片布局到它们应该遮挡的位置上,这样就完成了所有的遮挡工作了。好了。下面我将用代码来实现它。

    这里我以下图作为地图实例:
 

 

0
相关文章