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

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十七)战斗前夜之构建动态障碍物系统

 2010-09-30 20:47:32 来源:WEB开发网   
核心提示:在标准的MMORPG中,每个精灵对象都占据着一块区域(脚底的一块小面积),C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十七)战斗前夜之构建动态障碍物系统,该区域同样是障碍物系统中的一部分,并且它是动态的,拓展的宽度与高度(见下图),在本节实例中我将所有精灵的HoldWidth

在标准的MMORPG中,每个精灵对象都占据着一块区域(脚底的一块小面积),该区域同样是障碍物系统中的一部分,并且它是动态的,随着精灵的移动而时时变化着。实现游戏中动态的障碍物构建使障碍物系统趋向完美是全面进军战斗系统的必要前奏,大家不想看着主角和怪物叠在一起打来打去吧?

之前的章节中障碍物数组只有一个,它只包含地图障碍物信息(地图中固定不动的障碍物),因此要实现动态的障碍物构建,我们还得再增加一个障碍物数组做为当前游戏游戏中相对于主角的动态障碍物数组,以下为这两个障碍物数组的定义:

byte[,] FixedObstruction = new byte[1024, 1024], VaryObstruction;

其中FixedObstruction即为前面章节中的Matrix,这里为了方便理解,我将之重新命了名。

那么如何定义精灵的角底的障碍物区域呢?我们还得为精灵控件添加如下两个属性:

        // 获取或设置脚底示为障碍物区域扩展宽度

        public int HoldWidth { get; set; }

        // 获取或设置脚底示为障碍物区域扩展高度

        public int HoldHeight { get; set; }

这两个属性分别代表以精灵脚底坐标(即它的X,Y)为中心,拓展的宽度与高度(见下图)。

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十七)战斗前夜之构建动态障碍物系统

在本节实例中我将所有精灵的HoldWidth均设置为1,HoldHeight设置为0;这样所有精灵的脚底障碍物区域即为上图中左数第二个精灵所示区域。

1 2 3 4 5  下一页

Tags:开发 WPF Silverlight

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