2d游戏特效:2D游戏中的技能特效



在我们2D图形游戏中不可缺少大量光影、技能特效像Diablo II中魔法效果实现幸好我们拥有强大CPU来为我们实现Alpha混合和色彩饱和混合接下来让我们来讨论下如何用这些思路方法来实现我们游戏中所需要技能特效

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

2、色彩饱和特效
和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基本指令可能目前也很难找到块没有MMXCPU了(除非去旧货市场)MMX指令中就有个饱和加CPU指令可以非常方便进行操作不得不感谢CPU制造商所做功劳:-)

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



Tags:  2d游戏 专业技能特效 技能特效 2d游戏特效

延伸阅读

最新评论

发表评论