WEB开发网
开发学院软件开发C语言 C#开发WPF/Silverlight动画及游戏系列教程(Game C... 阅读

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(六)完美移动

 2009-06-22 08:32:52 来源:WEB开发网   
核心提示: 不难看出鼠标左键点击事件中Move()方法,该方法大家如果熟悉第一节的话将非常好理解,C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(六)完美移动(3),通过将这两段代码进行合成,即可以实现鼠标点哪主角就向哪移动,我们已经能够完美的实现角色的移动与停

不难看出鼠标左键点击事件中Move()方法,该方法大家如果熟悉第一节的话将非常好理解,通过将这两段代码进行合成,即可以实现鼠标点哪主角就向哪移动,同时主角的动画始终保持为跑步状态。

那么该动画并非完美,存在以下3个问题:

一、主角始终为跑步状态,那么能否当主角移动到目的地后即变成站立状态呢?

of course,方法不要太多,这里我给大家一个小提示,例如我们可以dispatcherTimer_Tick事件中进行如下判断:

if (storyboard != null && storyboard.GetCurrentTime() == TimeSpan.FromSeconds(1)) {

TODO... 

//主角的图片源切换成站立系列帧图片即可。

}

当然此方法只是N多方法之一。

 二、主角定位的坐标始终处于图片的左上角,能否定位到主角的脚底,例如我鼠标点哪,主角移动到该处后脚的位置站在此点上,实现精确定位?

这其实并不难,涉及到一个图片定位算法问题,您需要设置一个Point Spirit_Position{get;set}属性来存储主角的坐标。并且该坐标的Spirit_Position.X,Spirit_Position.Y值分别定位到主角的脚底,如下图:

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(六)完美移动

然后在以后的调用中都使用该坐标来取代Canvas.getLeft(),Canvas.getTop()。

三、主角朝向如何实现8个方向,即往哪边跑就朝向哪边?

这就是典型的算法问题了,其实也很简单,根据主角移动的目标Target.X和Target.Y分别与主角初始位置的Old.X和Old.Y进行一个角度计算,然后根据判断返回0-7(int),8个数字分别代表8个朝向,这样在Spirit.Source设置时就调用相应角度的图片源系列帧即可。

到此,我们已经能够完美的实现角色的移动与停止等动画,接下来的章节我将就地图结构与主角在地图中的处理进行详细讲解,敬请关注。

上一页  1 2 3 

Tags:开发 WPF Silverlight

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接