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

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十) 第一部分拓展小结篇

 2009-07-01 07:07:30 来源:WEB开发网   
核心提示: //换装 private void ChangeEquipment(object sender, RoutedEventArgs e) { Spirit.Equipment[0] = Convert.ToInt32(comboBox1.SelectionBoxItem.ToString(

        //换装
        private void ChangeEquipment(object sender, RoutedEventArgs e) {
            Spirit.Equipment[0] = Convert.ToInt32(comboBox1.SelectionBoxItem.ToString());
            Spirit.Equipment[1] = Convert.ToInt32(comboBox2.SelectionBoxItem.ToString());
            Spirit.Source = Super.EquipPart(Spirit.Equipment, Spirit.DirectionNum, Spirit.DirectionFrameNum, Spirit.TotalWidth, Spirit.TotalHeight,Spirit.SingleWidth, Spirit.SingleHeight);
        }

这三行代码实在太简单因此不再多做说明。需要提的是在更换衣服与武器的时候,如果内存中不存在该新衣服与武器搭配,则需要时时的进行合成,这会根据您CPU的速度来决定游戏卡壳的时间,毕竟是一个较大量图片合成计算。这在网络游戏中同样经常会遇到,例如你是否有过这样的经历:当你到了一定级别可以更换更高级的武器时,你双击该武器的时候,游戏会卡住那么以下,然后“哐铛”一声,武器才安装上去;但是如果你再把这把武器取下,再重新换上时却一点也不卡,这就是装备的缓存起到了作用。

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十) 第一部分拓展小结篇

四、A*寻路之大补充

鉴于目前很多朋友反馈说A*难度过高而无法理解,因此,我打算就A*寻路的使用及相关要点做一次重大补充说明:

使用A*,首先需要引用QX.dll程序集;接着在程序中创建IPathFinder PathFinder = new PathFinderFast(Matrix);这里有个重要的参数Matrix,它是用来描述寻路坐标系中(即缩小后的坐标系)障碍物的二维矩阵,我们这样创建它byte[,] Matrix = new byte[1024, 1024]; Matrix[x,y]与寻路坐标系中的坐标是一一对应的关系,例如Matrix[150,266]即对应寻路坐标系中的(150,266)这个点,假设GridSize=10,那么寻路坐标系中的(150,266)此点即对应游戏窗口中的Canvas.LeftProperty(1500)、Canvas.TopProperty(2660)。并且如果该点是障碍物,则我们设置Matrix[150,266]=0,如果不是障碍物而是可以通行的地点,则我们设置Matrix[150,266]=1,Matrix[,]数组中的其他所有的点依此类推均设置后即完成了地图中障碍物的布局。这里出现了GridSize这个很重要的概念,它起到缩放坐标系的作用,如何来理解它呢?这里我以byte[,] Matrix = new byte[1024, 1024]为例,1024*1024像素地图仅仅是一张大约我们一个电脑桌面尺寸,但是要在它上面构建障碍物却需要我们对1024*1024=1048576个点进行设置,简单有规律的障碍物布局还好,要是遇到复杂的地图该怎么办?这还是小事,要是地图的尺寸为10000*10000像素(这在MMORPG中再常见不过了),它带来的不仅是一个大内存数组int[,] Matrix = new int[10000, 10000],更可怕的是在没有制作地图编辑器之前去设置其中的100000000个障碍物,简直就是一件让人崩溃致极的事。

上一页  3 4 5 6 7 8 9  下一页

Tags:开发 WPF Silverlight

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