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

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

 2010-09-30 20:47:09 来源:WEB开发网   
核心提示:战斗即将开始!要实现MMORPG中的攻击系统,必须为精灵增加相关的参数及属性,C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十八) 经典式属性设计及完美的物理攻击系统,这些内容及它们之间的牵连关系设计决定着游戏的新颖度与耐玩性;就好比当年的传奇,系统再普通不过了,当角色升级时,

战斗即将开始!要实现MMORPG中的攻击系统,必须为精灵增加相关的参数及属性,这些内容及它们之间的牵连关系设计决定着游戏的新颖度与耐玩性;就好比当年的传奇,系统再普通不过了,但是却因为有着恰如其分的系统参数设定与完美的世界观定位,成就了一代不朽巨作。那么本节开始,我将首先对精灵控件进行属性完善,使之具传统经典游戏中的角色属性。

首先看下图:

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

这些属性是目前最经典的角色属性设置(不同的游戏中,某些属性的命名可能会不同。例如上图中的“体质”属性在本节示例游戏中我称之为“体格”;而“运势”属性我则称之为“运气”等等,但意义是一样的);我们先分析:力量、智慧、敏捷、体质、运气这5个属性为所有基本属性中的根属性,何谓根属性?就是所有基值属性的最底层。当角色升级时,通过手动或系统自动根据角色的职业特性对这5个根属性进行加值,而其他所有与之相关联的基值属性都将同时受到影响。例如我是这样定义这5个根属性的:

        double _VPower;

        /// <summary>

        /// 获取或设置力量

        /// 影响最大负重,物理攻击力(最小 - 最大)

        /// --[相关基值属性计算公式]:

        /// 最大负重 = ABase[0] + Equip[0] + Buff[0] + VPower * Coefficient[0]

        /// 物理攻击力最小值 = ABase[1] + Equip[1] + Buff[1] + VPower * Coefficient[1]

        /// 物理攻击力最大值 = ABase[2] + Equip[2] + Buff[2] + VPower * Coefficient[2]

        /// </summary>

        public double VPower {

            get { return _VPower + Equip[16] + Buff[16]; }

            set { _VPower = value; }

        }

        double _VAgile;

        /// <summary>

        /// 获取或设置敏捷

        /// 影响命中,闪避,跑速,攻速,施法速度

        /// --[相关基值属性计算公式]:

        /// 命中 = ABase[3] + Equip[3] + Buff[3] + VAgile * Coefficient[3]

        /// 闪避 = ABase[4] + Equip[4] + Buff[4] + VAgile * Coefficient[4]

        /// 跑速 = ABase[5] - Equip[5] + Buff[5] - VAgile * Coefficient[5]

        /// 物攻速度 = ABase[6] - Equip[6] + Buff[6] - VAgile * Coefficient[6]

        /// 施法速度 = ABase[7] - Equip[7] + Buff[7] - VAgile * Coefficient[7]

        /// </summary>

        public double VAgile {

            get { return _VAgile + Equip[17] + Buff[17]; }

            set { _VAgile = value; }

        }

        double _VPhysique;

        /// <summary>

        /// 获取或设置体格

        /// 影响最大生命值,物理防御力,格档率(与暴击率相反,物理或魔法攻击伤害减半)

        /// --[相关基值属性计算公式]:

        /// 最大生命值 = ABase[8] + Equip[8] + Buff[8] + VPhysique * Coefficient[8]

        /// 物理防御力 = ABase[9] + Equip[9] + Buff[9] + VPhysique * Coefficient[9]

        /// 格档率 = ABase[10] + Equip[10] + Buff[10] + VPhysique * Coefficient[10]

        /// </summary>

        public double VPhysique {

            get { return _VPhysique + Equip[18] + Buff[18]; }

            set { _VPhysique = value; }

        }

        double _VWisdom;

        /// <summary>

        /// 获取或设置智慧

        /// 影响最大魔法值,魔法防御力,魔法攻击力(最小 - 最大)

        /// --[相关基值属性计算公式]:

        /// 最大魔法值 = ABase[11] + Equip[11] + Buff[11] + VWisdom * Coefficient[11]

        /// 魔法防御力 = ABase[12] + Equip[12] + Buff[12] + VWisdom * Coefficient[12]

        /// 魔法攻击力最小值 = ABase[13] + Equip[13] + Buff[13] + VWisdom * Coefficient[13]

        /// 魔法攻击力最大值 = ABase[14] + Equip[14] + Buff[14] + VWisdom * Coefficient[14]

        /// </summary>

        public double VWisdom {

            get { return _VWisdom + Equip[19] + Buff[19]; }

            set { _VWisdom = value; }

        }

        double _VLucky;

        /// <summary>

        /// 获取或设置幸运

        /// 影响暴击率(物理或魔法攻击加倍)及其他

        /// --[相关基值属性计算公式]:

        /// 暴击率 = ABase[15] + Equip[15] + Buff[15] + VLucky * ACoefficient[15]

        /// </summary>

        public double VLucky {

            get { return _VLucky + Equip[20] + Buff[20]; }

            set { _VLucky = value; }

        }

        /// <summary>

        /// 获取或设置属性基数

        /// 0-14对应基础属性值

        /// </summary>

        public double[] ABase { get; set; }

        /// <summary>

        /// 获取或设置装备加成总和

        /// 0-14对应基础属性值

        /// 15-19对应5大属性

        /// </summary>

        public double[] Equip { get; set; }

        /// <summary>

        /// 获取或设置加持/减持值总和

        /// 0-14对应基础属性值

        /// 15-19对应5大属性

        /// </summary>

        public double[] Buff { get; set; }

        /// <summary>

        /// 获取或设置属性系数(成长率)

        /// 0-14对应基础属性值

        /// </summary>

        public double[] Coefficient { get; set; }

1 2 3 4 5 6  下一页

Tags:开发 WPF Silverlight

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