C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十八) 经典式属性设计及完美的物理攻击系统
2010-09-30 20:47:09 来源:WEB开发网战斗即将开始!要实现MMORPG中的攻击系统,必须为精灵增加相关的参数及属性,这些内容及它们之间的牵连关系设计决定着游戏的新颖度与耐玩性;就好比当年的传奇,系统再普通不过了,但是却因为有着恰如其分的系统参数设定与完美的世界观定位,成就了一代不朽巨作。那么本节开始,我将首先对精灵控件进行属性完善,使之具传统经典游戏中的角色属性。
首先看下图:
这些属性是目前最经典的角色属性设置(不同的游戏中,某些属性的命名可能会不同。例如上图中的“体质”属性在本节示例游戏中我称之为“体格”;而“运势”属性我则称之为“运气”等等,但意义是一样的);我们先分析:力量、智慧、敏捷、体质、运气这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; }
Tags:开发 WPF Silverlight
编辑录入:爽爽 [复制链接] [打 印]- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››silverlight全屏显示图片
- ››Silverlight MVVM 模式(一) 切近实战
- ››开发者眼中的Windows Phone和Android
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››WPF学习笔记12. Binding (5)
- ››WPF学习笔记11. Binding (4)
- ››WPF学习笔记10. Binding (3)
- ››WPF学习笔记9. Binding (2)
- ››WPF学习笔记8. Binding
更多精彩
赞助商链接