您的位置:首页 > 其它

Silverlight MMORPG网页游戏开发课程[一期] 第八课:场景之切换与动画效果

2010-09-30 16:43 736 查看
引言

丰富的关卡与场景是充实游戏的魔法圣器,时而穿过云霄,时而坠入大海,就算是陆地同样可以云雾缭绕、山峦叠嶂;作为玩家,游戏玩累了休息时聆听的可以不仅仅是音乐,作为游戏设计者,你有责任将此时疲惫的他们带进梦幻空间:登上紫禁之颠、长城尽头,潜入亚特兰蒂斯深处与美人鱼结伴嬉戏,尝试一次惬意舒心的休憩之旅又未尝不可?虚幻的游戏同样可以给玩家带来真切的感受,华丽莫测的场景变换开启了这扇通往意念领域的大门。

8.1游戏中场景切换实现(交叉参考:[u]地图间的传送与切换[/u] [u]梦幻西游(Demo) 之 “天人合一”[/u])

传统游戏两个场景之间切换往往通过呈现一幅游戏相关的宣传背景作为过度,并更新地图、角色、模型等目标场景所必须的一切资源读取加载完毕后才算完成。通过Silverlight开发基于Web的MMORPG网页游戏则可简化这一过程,动态按需下载技术使得我们在进入新场景前仅需下载该场景的配置文件及缩略地图等少部分资源即可。

按照该思路,我们首先创建一个名为Transition的过场类:

代码

<?xml version="1.0" encoding="utf-8" ?>
<Animation FullName="传送点" CenterX="66" CenterY="38" FrameNum="7" Interval="160" Format="1" Kind="2">
<Frame ID="0" OffsetX="0" OffsetY="0" />
<Frame ID="1" OffsetX="0" OffsetY="0" />
<Frame ID="2" OffsetX="0" OffsetY="0" />
<Frame ID="3" OffsetX="0" OffsetY="0" />
<Frame ID="4" OffsetX="0" OffsetY="0" />
<Frame ID="5" OffsetX="0" OffsetY="0" />
<Frame ID="6" OffsetX="0" OffsetY="0" />
</Animation>
另外赋予动画控件的三种常用模式以满足可能的需求:

/// <summary>
/// 动画类型
/// </summary>
public enum AnimationKind {
/// <summary>
/// 仅播放一次后回到第一帧静止
/// </summary>
Once = 0,
/// <summary>
/// 播放一次结束后自动移除
/// </summary>
OnceToDispose = 1,
/// <summary>
/// 一直循环播放
/// </summary>
Loop = 2,
}
动画每播放到结束帧时通过判断是哪种模式进而触发相应逻辑:

void dispatcherTimer_Tick(object sender, EventArgs e) {
if (currentFrame == frameNum) {
switch (Kind) {
case AnimationKind.Once:
currentFrame = 0;
dispatcherTimer.Stop();
break;
case AnimationKind.OnceToDispose:
Dispose();
if (Disposed != null) { Disposed(this, new EventArgs()); }
return;
case AnimationKind.Loop:
currentFrame = 0;
break;
}
}
body.Source = Global.GetWebImage(string.Format(@"Animation/{0}/{1}{2}", Code, currentFrame, format));
Canvas.SetLeft(body, frameOffset[currentFrame].X);
Canvas.SetTop(body, frameOffset[currentFrame].Y);
currentFrame++;
}

/// <summary>
/// 销毁
/// </summary>
public void Dispose() {
dispatcherTimer.Stop();
dispatcherTimer.Tick -= dispatcherTimer_Tick;
}
另外大家是否有注意到如果为动画控件赋了Tip值,那么动画将会附加ToolTip提示效果,配合上前面的3种模式,该动画控件能适用的范围更加广泛,且能以此为基类继续向下衍生出比如魔法、装饰等控件。



本课小结:本节我向大家讲解了如何实现游戏中场景切换(传送)及动画效果。这也是对游戏框架整体合理性的一次综合考验,在合理封装的游戏设计规范下,仅仅需要改动丁点的代码即可完成复杂的游戏功能拓展,这也是C#开发Silverlight-MMORPG网页游戏给我们所带来的面向对象高效率开发模式所赋予的益处。

本课源码点击进入目录下载

参考资料:中游在线[WOWO世界]Silverlight C# 游戏开发:游戏开发技术

教程Demo在线演示地址http://cangod.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐