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

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十四)地图编辑器诞生啦!

 2010-09-30 21:02:10 来源:WEB开发网   
核心提示:到目前为止,教程示例游戏中虽然实现了A*,C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十四)地图编辑器诞生啦!,但是还无法轻松的为地图设置障碍物;并且游戏所有地图均为一张整的大图片,主角的移动会导致窗体对地图的不停切割,因此为了可以在其上面能够进行障碍物的绘制及擦除操作,我们

到目前为止,教程示例游戏中虽然实现了A*,但是还无法轻松的为地图设置障碍物;并且游戏所有地图均为一张整的大图片,主角的移动会导致窗体对地图的不停切割,越大的地图带来的负面性能损耗越明显。对地图进行切片处理则可达到性能的最大优化:载入的时候按需加载,地图根据主角的位置仅显示特定部份;并且如果还能配上任意勾勒的遮挡物,那么这一切的一切将更能完美的诠释我们的游戏。开发制作地图编辑器已迫在眉睫。

那么本节我将为大家讲解如何制作一款基于Grid的即易用又强大的地图编辑器,并首先实现障碍物设定功能及A*寻路模拟。

第一步:设计布局

通用型的编辑器必须能够适应所有尺寸的地图,因此我选择ScrollViewer作为地图的承载容器,并通过设置它的HorizontalScrollBarVisibility与VerticalScrollBarVisibility均为auto使之能自适应地图尺寸,即当地图超出窗体尺寸的情况下出现滚动条。由于一个ScrollViewer只能承载一个Content,因此为了可以在其上面能够进行障碍物的绘制及擦除操作,我们还必须添加另外一个背景透明的ScrollViewer用于承载障碍物网格(Grid):

如描述上说的,这两个ScrollViewer必须保持协动一致,即两者的尺寸、滚动条时刻所处的位置等均表现一致:

        //滚动窗体二级协动
        private void ObstructionViewer_ScrollChanged(object sender, ScrollChangedEventArgs e) {
            ScrollViewer scrollViewer = sender as ScrollViewer;
            MapViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset);
            MapViewer.ScrollToHorizontalOffset(scrollViewer.HorizontalOffset);
        }

1 2 3 4 5  下一页

Tags:开发 WPF Silverlight

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