C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(十六) 牵引式地图移动模式②

本文详细介绍了在C# WPF/Silverlight游戏中,如何改造A*寻路方法以适应牵引式地图移动模式。通过分析影响主角位置的因素,实现了基于X、Y坐标更新的动画,确保游戏动画的平滑衔接。文章提供了关键代码示例,解释了平滑处理的重要性,以避免角色在移动时出现突跳现象。
摘要由CSDN通过智能技术生成

精灵控件让游戏开发更美好!有了它,离完善牵引式地图移动模式可谓一步之遥。只剩下最后一个环节了,大家加油吧。

上一节,我在界面线程中通过时时设置Canvas.SetLeft(Spirit, Spirit.X + Canvas.GetLeft(Map) - SpiritCenterX * GridSize);Canvas.SetTop(Spirit, Spirit.Y + Canvas.GetTop(Map) - SpiritCenterY * GridSize);来实现主角跟随着地图移动。从该公式我们可以分析出影响主角在窗口中显示位置的两个因素:第一个为地图图片(Image Map)相对于窗口的位置(Canvas.GetLeft(Map)Canvas.GetTop(Map)),它是在鼠标牵引地图移动的时候时时改变的,与主角在地图上的走动无关;第二个则为主角自身的XY坐标属性(Spirit.XSpirit.Y),当主角在地图上走动时,它是时时更改的。由此可以得到一个结论:要实现主角在此模式地图上的移动,只需要在它走路的时候时时更新它的坐标Spirit.XSpirit.Y即可,这样界面线程中会同步更新主角在窗口中的位置而达到完美的游戏动画衔接。

找到了切入点,那么实现起来就简单多了。

这里,我们首先需要对前面章节中的A*寻路方法进行一些改进。在前面的章节中,由于地图是固定死不动的,且尺寸相当于窗口大小,这样我们简单的将地图和窗口示为一体。因此,在A*寻路过程(AStarMove())中同时实现了主角相对于地图的移动,即基于对象关联属性为PropertyPath("Canvas.Left") PropertyPath("Canvas.Top")Storyboard动画。但是在牵引式地图移动模式中就不能这样做了,根据前面分析的原理,则必须改为基于对象关联属性为PropertyPath("X")PropertyPath("Y")Storyboard动画。此时的动画或许将之理解为从寻路得到的路径序列点中连续取出坐标的计时器更加贴切,因为它只负责改变SpiritX

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值