一起谈.NET技术,Silverlight 2.5D RPG游戏技巧与特效处理:(七)动画特写

简介:   Silverlight中的HLSL不仅适用于场景与动画渲染,对于游戏中的角色,我们同样可以利用它制作动画特写。较常见的比如角色传送时的淡入淡出、扭曲变形、幻化呈现等切换动画,当然还有例如角色被DeBuff时所表现出来的放大缩小以及虚弱时的不规则体形等。

  Silverlight中的HLSL不仅适用于场景与动画渲染,对于游戏中的角色,我们同样可以利用它制作动画特写。较常见的比如角色传送时的淡入淡出、扭曲变形、幻化呈现等切换动画,当然还有例如角色被DeBuff时所表现出来的放大缩小以及虚弱时的不规则体形等。适当的场合为角色增加动画特写使得游戏更显精致而华丽,当玩家身心愉快的融入其中而流连忘返时,或许正是这些魔幻般的特效在背后默默的飘散着令人迷醉的芳香。

  还记得Shazzam吗?要制作特写依旧离不开这款强大的工具,以角色的传送特写“幻降”为例,对应Shazzam中的现成特效名为:DirectionalBlur,我们不妨看看它的HLSL代码:

 
 
float Angle : register(C0);
float BlurAmount : register(C1);
sampler2D Texture1Sampler : register(S0);

float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 c
= 0 ;
float rad = Angle * 0.0174533f ;
float xOffset = cos(rad);
float yOffset = sin(rad);
for ( int i = 0 ; i < 16 ; i ++ )
{
uv.x
= uv.x - BlurAmount * xOffset;
uv.y
= uv.y - BlurAmount * yOffset;
c
+= tex2D(Texture1Sampler, uv);
}
c
/= 16 ;
return c;
}

  仅仅十来行不到1KB的代码,将之按照第5的方法配置进游戏项目后,在角色传送结束时我们便通过Storyboard创建基于DirectionalBlur参数为BlurAmount的动画实现360任意角度的幻影过度动画特写:

 
 
DirectionalBlur directionalBlur = new DirectionalBlur() { Angle = 90 };
entity.Effect
= directionalBlur;
Storyboard blurStoryboard
= new Storyboard();
DoubleAnimation doubleAnimation
= new DoubleAnimation() {
From
= - 0.25 ,
To
= 0 ,
Duration
= new Duration(TimeSpan.FromMilliseconds( 600 )),
};
Storyboard.SetTarget(doubleAnimation, directionalBlur);
Storyboard.SetTargetProperty(doubleAnimation,
new PropertyPath( " BlurAmount " ));
blurStoryboard.Children.Add(doubleAnimation);
EventHandler handler
= null ;
blurStoryboard.Completed
+= handler = (s1, e1) => {
Storyboard sb
= s1 as Storyboard;
sb.Stop();
sb.Completed
-= handler;
entity.Effect
= null ;
};
blurStoryboard.Begin();
 

  某些场合为了突出玩家隆重登场,我们通常还会使用到比如“影合”(GrowablePoissonDisk)的动画特写:无数个角色的重影由四面八方汇聚而来,如同灵魂与力量的回归附体:

  某些时候角色从一个空间向另外一个空间穿梭,虚幻的感受是身体被分解成粒子最终从下至上又被重新组合,此时常会用到“新生”(CircleReveal)动画特写来描述这样一个穿越生死的经历:

  除此之外,类似百叶窗的切片特写以及波动扭曲特写在表述特定魔法效果时同样可以起到锦上添花之功效:

 

  到此为止,本系列Demo中已集成了10数款精炼而实用的HLSL渲染特效,单独的存放于名为Effects的项目中,使用起来非常简便。无论是企业应用亦或是游戏开发;无论是将之用于窗体的渲染,还是用于场景、动画、角色的动画特写都显得游刃有余:

  当然,发自内心的希望更多的Silverlight开发者能融入到HLSL的编写中,实现并分享更多更加炫酷的动画特效为Silverlight将来一统三端打下基础。不远了,Silverlight 5 发布后游戏开发都会易如反掌,一切特效在Silverlight面前将一文不值。我始终坚信:追求极致的心必定银光四射,长空千里!

  本节源码下载地址:Demo6.rar

  在线演示地址:http://silverfuture.cn

目录
相关文章
|
容器
Silverlight & Blend动画设计系列二:旋转动画(RotateTransform)
原文:Silverlight & Blend动画设计系列二:旋转动画(RotateTransform)   Silverlight的基础动画包括偏移、旋转、缩放、倾斜和翻转动画,这些基础动画毫无疑问是在Silverlight中使用得最多的动画效果,其使用也是非常简单的。
965 0
|
容器 数据可视化 内存技术
Silverlight & Blend动画设计系列一:偏移动画(TranslateTransform)
原文:Silverlight & Blend动画设计系列一:偏移动画(TranslateTransform)   用户界面组件、图像元素和多媒体功能可以让我们的界面生动活泼,除此之外,Silverlight还具备动画功能,它可以让应用程序“动起来”。
794 0
Silverlight & Blend动画设计系列四:倾斜动画(SkewTransform)
原文:Silverlight & Blend动画设计系列四:倾斜动画(SkewTransform)   Silverlight中的倾斜变化动画(SkewTransform)能够实现对象元素的水平、垂直方向的倾斜变化动画效果。
795 0
|
容器
Silverlight & Blend动画设计系列五:故事板(StoryBoards)和动画(Animations)
原文:Silverlight & Blend动画设计系列五:故事板(StoryBoards)和动画(Animations)   正如你所看到的,Blend是一个非常强大的节约时间的设计工具,在Blend下能够设计出很多满意的动画作品,或许他具体是怎么实现的,通过什么方式实现的我们还是一无所知。
911 0
Silverlight & Blend动画设计系列七:模糊效果(BlurEffect)与阴影效果(DropShadowEffect)
原文:Silverlight & Blend动画设计系列七:模糊效果(BlurEffect)与阴影效果(DropShadowEffect)   模糊效果(BlurEffect)与阴影效果(DropShadowEffect)是两个非常实用和常用的两个特效,比如在开发相册中,可以对照片的缩略图添加模糊效果,在放大照片的过程中动态改变照片的大小和模糊的透明度来达到一个放大透明的效果。
1045 0
Silverlight & Blend动画设计系列六:动画技巧(Animation Techniques)之对象与路径转化、波感特效
原文:Silverlight & Blend动画设计系列六:动画技巧(Animation Techniques)之对象与路径转化、波感特效   当我们在进行Silverlight & Blend进行动画设计的过程中,可能需要设计出很多效果不一的图形图像出来作为动画的基本组成元素。
1001 0
|
API
Silverlight & Blend动画设计系列十:Silverlight中的坐标系统(Coordinate System)与向量(Vector)运动
原文:Silverlight & Blend动画设计系列十:Silverlight中的坐标系统(Coordinate System)与向量(Vector)运动   如果我们习惯于数学坐标系,那么对于Silverlight中的坐标系可能会有些不习惯。
1228 0
|
UED
Silverlight & Blend动画设计系列九:动画(Animation)与视图状态管理(Visual State Manager)
原文:Silverlight & Blend动画设计系列九:动画(Animation)与视图状态管理(Visual State Manager)   Silverlight中的动画(Animation)与视图状态管理(Visual State Manager) 结合使用是非常常见的,动画用于管理对象在某段事件段内执行的动画动作,视图状态管理则用于控制对象在多个不同的视觉状态之间切换、导航。
768 0
Silverlight & Blend动画设计系列八:拖放(Drag-Drop)操作与拖放行为(DragBehavior)
原文:Silverlight & Blend动画设计系列八:拖放(Drag-Drop)操作与拖放行为(DragBehavior)   在Silverlight中自身并没有提供拖放功能的相关实现,要实现拖放功能得借助其事件支持(MouseLeftButtonDown、MouseLeftButtonUp和MouseMove)来完成,实际应用中我们可以通过行为(Behavior)特性将拖放操作封装为行为,这样可达到代码复用的效果。
1045 0
Silverlight & Blend动画设计系列十三:三角函数(Trigonometry)动画之飘落的雪花(Falling Snow)
原文:Silverlight & Blend动画设计系列十三:三角函数(Trigonometry)动画之飘落的雪花(Falling Snow)   平时我们所看到的雪花(Falling Snow)飘飘的效果实际上也是一个动画,是由许多的动画对象共同完成的一个界面效果。
932 0