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

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十八) 经典式属性设计及完美的物理攻击系统

 2010-09-30 20:47:09 来源:WEB开发网   
核心提示: 以力量属性VPower为例,它影响着最大负重、物理攻击力最小值、物理攻击力最大值这3个基值属性,C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十八) 经典式属性设计及完美的物理攻击系统(2),又以其中的物理攻击力最大值为例: /// <summar

以力量属性VPower为例,它影响着最大负重、物理攻击力最小值、物理攻击力最大值这3个基值属性,又以其中的物理攻击力最大值为例:

        /// <summary>

        /// 获取物理攻击力最大值

        /// </summary>

        public double VAttackMax {

            get { return ABase[2] + Equip[2] + Buff[2] + VPower * Coefficient[2]; }

        }

从它的CLR构造可以看出VAttackMax = ABase[2] + Equip[2] + Buff[2] + VPower * Coefficient[2],并且最关键的它是只读的(即通过多个影响其值的相关属性值集合而成,并非通过直接赋值得到,这样做可以轻松构建出通用且易于维护的精灵属性系统)。其中Abase[2]为该精灵物理攻击力最大值的原始基础值,例如战士的ABase[2]可以定为30,那么魔法师的ABase[2]大约为10左右等等;Equip[2]为所有装备的力量加成值总和,这个不用说大家也明白;Buff[2]为所有加持减持等效果的附加值;Coefficient[2]为该精灵的力量系数,例如狂战士的Coefficient[2]可以定为10,而牧师的Coefficient[2]则约为2左右等等。那么其他的诸如敏捷属性VAgile,体格属性VPhysique等等均是类似的关联设计。

属性定义完成后,接下来便可以着手设计精灵的物理攻击系统。

同样的我们首先对物理攻击的需求进行分析,即物理攻击的触发、过程及结束处理:

当我们在其他精灵身上点击鼠标左键后,首先进行敌对判断,如果是敌对的则将物理攻击对象锁定为该精灵(敌人),然后主角向其位置跑去,当该敌人进入主角的攻击距离(范围)内时,主角向其发起物理攻击,然后通过公式计算出伤害值并输出显示出来。这就是最典型的物理攻击发生过程。

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

Tags:开发 WPF Silverlight

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