首页 | 教程 | 人才 | 资源 | 视频 | 外包 | 培训 | 论坛  
游戏教程 美术基础 3D设计 平面软件 影视后期 建筑效果 网站设计 精选教程
 
网络学堂   2D美术   3D美术   游戏动作   次时代游戏   游戏策划   游戏程序   理论   其它
 您现在的位置:首页 > 教程频道 > 游戏教程 > 游戏程序
     2D游戏中的技能特效

2D游戏中的技能特效
编辑:大磊 发布时间:2009-05-11 查看:4462 次   
    在我们的2D图形游戏中不可缺少大量的光影、技能特效,像Diablo II中的魔法效果的实现,幸好我们拥有强大的CPU来为我们实现Alpha混合与色彩饱和混合,接下来让我们来讨论一下如何用这些方法来实现我们游戏中所需要的技能特效。

一、Alpha混合特效
   
Alpha混合可以让我们让我们将一张图象按一定程度的比例与另一张图象进行混合(如图1),但普通的Alpha混合并不适合游戏中的技能特效的显示,这时候我们只需要添加一些数据让混合更准确些,为了实现这样的效果,我们往图象中加入Alpha通道数据(如图2),然后我们再根据通道数据来进行混合就可得到如图3的混合效果,现在看起来是不是更像特效了。 :) 
   
不过问题始终还是有的,只要仔细观察,不难发现在图3中的特效周围有黑影,这似乎给我们的技能效果添加了一点瑕疵,为什么会这样?因为我们的程式是根据图象上的通道数据来进行不同程度的Alpha混合处理,但在特效边缘实际上RGB色彩值更接近于黑色(R=0、G=0、B=0),一旦这样混合后,周围肯定会产生黑边,不过可以放心,这里我们可以用一个简单的技巧来轻松避免黑边的产生,那就是将图2中的RGB色彩图用灰色背景来填充,这样在混合之后就没有黑边,至少看起来没有以前明显了,这里没有最后效果图,最后的效果还是由你自己的程式来实现吧。


图1
普通的整图Alpha混合


图2


图3
Alpha+通道混合的效果


图4
色彩饱和处理的效果

二、色彩饱和特效
    与Alpha混合相比,色彩饱和更适合于特效的制作,无论从性能上讲,还是从效果上说,色彩饱和比Alpha混合更胜一筹(如图4)。可能因为色彩饱和的算法过于简单,很少有进行介绍的,我们先就对色彩饱和的方法来进行介绍一下,混合公式:

    R1、G1、B1 : 图象像素点的源色值;
    R2、G2、B2 : 底图像素点的源色值;
    R = R1 + R2;( IF R > 255 THEN R = 255 )
    G = G1 + G2;( IF G > 255 THEN G = 255 )
    B = B1 + B2;( IF B > 255 THEN B = 255 )

R、G、B就是我们所需的混合结果。
    可能你会觉得这么复杂的计算怎么会在性能上优于Alpha混合,当然,如果你所使用到的只是CPU的常规指令,那的确,在性能上没有Alpha快,但现在MMX指令已经作为CPU的基本指令,可能目前也很难找到一块没有MMX的CPU了(除非去旧货市场),MMX指令中就有一个饱和加的CPU指令,可以非常方便的进行操作,不得不感谢CPU制造商所做的功劳。:-) 

好了,两种方式都介绍了,可以说这基本上已经可以胜任2D游戏中所需要,接下来就让我们来让游戏更精彩。

相关文章:
本月教程排行
·