2d游戏:2D游戏中人物被遮挡的透明效果



通常我们在2D游戏中经常使用人物半透明效果来表示人物被建筑物所遮挡这种效果做法不但画面效果较佳而且能让玩家更好了解自己所控制玩家当前位置才不会被物件所遮挡茫然失去方向这里我们就是来讲讲简单处理思路方法

我们游戏场景般由地表层、建筑(遮挡)层、人物层来进行管理其中建筑和人物层必须经过排序处理来确定绘制先后次序这就产生了人物和建筑、建筑和人物种相互遮挡关系;我们来看看我们所需要资源:

地表层图象

人物图象

遮挡物图象



我们现在要做就是把这3者有机结合起来组成我们游戏画面

地表层通常不存在遮挡关系因而般都直接进行绘制不需要多做处理然后就是人物和物件遮挡关系处理般情况下我们都会得出这样个结果:

图1

我们把最基本东西实现了但我们要如何实现人物部分透明呢?这时候我们用个很简单窍门技巧就能够实现只要在人物原来位置再绘制边Alpha混合人物图象这样就能得到我们所需要效果:

图2

我们马上就可以看到人物脑袋已经半透明但身体部分还保持原来色彩这是个很简单道理如果两张图象那Alpha混合出来图象还是图象本身
呵呵是不是很简单~~~~

有没有高级点思路方法?这中思路方法好象很浪费机器性能
人物在绘制时候多了重绘Alpha部分性能上会有不少折扣特别是在目前网络游戏盛行如果在棵大树下有几十上百个玩家那我们机器就 ……(准备好灭火器以免CPU过热着火);当然如果你游戏人物不多或对性能要求不高还是比较建议使用此思路方法毕竟此思路方法简单而且不容易出错 :)

现在我们来讨论下“高级”点遮挡透明效果(由于思路方法众多这里只讨论思路方法没有实际做法)

我们可以事先制作好各遮挡物体掩膜(这个也可以用2D图象中ColorKey来代替或者用Alpha通道来实现)然后在绘制时候根据掩膜进行相对判定假设在绘制人物过程中程式遇到和遮挡物产生遮挡此时人物图象又有部分被遮挡物所覆盖那我们可以根据事先准备好遮挡物掩膜来进行是否绘制人物各像素判定;于此相同在绘制Alpha部分时候同样根据遮挡物掩膜来判定是否进行绘制这样能够在定程度上缓解绘图给程式带来负担但也给制作上带来了复杂计算如图:

图3

后语我们在游戏中使用什么方式来实现游戏并不重要关键是要在开发难度以及所获得效果中取得平衡点用最少力实现最佳效果提高整体游戏开发制作势力

CopyRight 中国游戏开发技术资源网 sea_bug
您可以任意转载但未经许可不可用于商业目转载必须保留此声明2002/5/22




Tags:  2d游戏

延伸阅读

最新评论

发表评论