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

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十一)主位式地图移动模式

 2009-07-04 07:07:23 来源:WEB开发网   
核心提示: 当主角处于中上(Spirit.X>400 && Spirit.X<950 && Spirit.Y <=390)、中下(Spirit.X>400 && Spirit.X<950 && Spirit.Y >=1050)这2个边缘区域时,主角在水平方向上始终居

当主角处于中上(Spirit.X>400 && Spirit.X<950 && Spirit.Y <=390)、中下(Spirit.X>400 && Spirit.X<950 && Spirit.Y >=1050)这2个边缘区域时,主角在水平方向上始终居中,移动时它在窗口中只会做上下移动,水平方向上通过地图相对反向移动形成主角水平方向前进的视觉效果;

当主角处于左中(Spirit.>390 && Spirit.Y<1050 && Spirit.X<=400)、右中(Spirit.>390 && Spirit.Y<1050 && Spirit.X>=950)这2个边缘区域时,主角在垂直方向上始终居中,移动时它在窗口中只会做左右水平移动,垂直方向上通过地图反向移动形成主角垂直方向前进的视觉效果;

当主角处于正中区域,也就是游戏中主角最多的时候,主角此时始终处于游戏窗口的正中位置(定位到脚底),当它移动时,在窗口中通过地图的反向移动从而在视觉上形成主角在移动(实际上主角是静止的,只做方向动画移动),这与第二十节中的牵引式地图移动模式有异曲同工之处,只是两者刚好相反:前者主角不动,地图反向移动;后者为地图随鼠标的牵引而移动,主角不动。最后得出结论:我们只需将第二十节中的AllMove()方法进行修改,即可以实现完美的模式转换。

原理就这么简单,至于其中的数字是如何得到的,我们只需要预先定义好两个参数WindowCenterX,WindowCenterY。它们其实就是游戏窗体尺寸的5折(如果有标题栏则需要减去标题栏的高度约20像素),以800*600的窗口模式游戏窗体为例,那么它的WindowCenterX=800/2 =400,WindowCenterY=(600-20)/2=390,那么1024*768呢?以此类推。理请了思路,接下来就让我们来实现主位式地图移动模式下的AllMove()方法,这里我以主角位于左上这个区域为例:

上一页  1 2 3 4 5 6 7  下一页

Tags:开发 WPF Silverlight

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