上一节,我们实现了6大系魔法的附加属性,并赋予了不同的颜色加以区别;但是在实际的游戏开发中,特别是Q版或追求艺术表现的网络游戏中,为了能够更加突显魔法的绚丽与雍华,设计师们会为魔法增加大量的画面体现:例如被冻结的精灵脚底长出冰刺(或被装进一块冰晶中);灼伤的精灵会周身燃烧;中毒的精灵会不停的冒着毒泡泡;麻痹中的精灵浑身会不停的穿梭着电流等等,这些修饰使得魔法的魅力提升到极至,同时也是游戏幽雅细节的终极体现。
本节我将以冻结魔法为例,向大家讲解如何为魔法增加漂亮的特效装饰。
经过前面的学习,大家是否已总结出一个规律:需要增加额外东西时,首先想到的即是用户控件;那么我们首先创建一个名为QXDecoration的用户控件。接下来就是准备素材了。这里我制作了3张用于装饰的冰刺:
分别命名为4-0,4-1,4-2,其命名规则对应上一节中的魔法类型设定,即所有冰冻类魔法均可以用之来装饰。为什么要使用3张呢?其实一张就已足够了,只是效果上每个精灵被冻结后将一模一样;而通过随机从这3张中抽取1张用于装饰冻结效果将大幅度增加画面的生动性,在大量精灵同时被冻结的情况下产生一种宏大的气势感;另外,如果您能通过Blend画出一个类似的冰刺,那么基于矢量的装饰物将可以任意的拉伸及变化,表现出来的效果会更加逼真与贴切。
都准备好后,代码实现起来是很简单的,首先将配置写进Config.xml:
<Decoration Code="4" Num="3" Duration="2" CenterX="40" CenterY="60"></Decoration>
接下来只需在魔法触发伤害帧时将对应的魔法效果装饰附加到被攻击对象的脚底即可:
……
//附加特效装饰
if (magic.DecorationCode != -1 && canvas.FindName(string.Format("Decoration{0}", enemy.Name)) == null) {
LoadXElement(string.Format("Decoration{0}", magic.DecorationCode.ToString()), GetTreeNode(SystemConfig, "Decoration"<