Unity可扩展、灵活的战斗框架实现1 构想

导言

一直想要做一个像DOTA那样灵活,可扩展,可配置的战斗框架,可以用在多个类型的游戏中如RTS,ARPG,战棋等等。可是自己水平不够,看了一些现有的框架,感觉又不够符合自己想要的样子。所以记录一下自己的学习和思考,也是梳理自己的思路,来一步步实现。

参考:UNITY-GAS  https://github.com/sjai013/unity-gameplay-ability-systemicon-default.png?t=N7T8https://github.com/sjai013/unity-gameplay-ability-system

        (15 封私信 / 19 条消息) 如何设计一个易扩展的游戏技能系统? - 知乎 (zhihu.com)icon-default.png?t=N7T8https://www.zhihu.com/question/29545727

基于行为树的MOBA技能系统:总目录 | 登峰造极者,殊途亦同归。 (lfzxb.top)icon-default.png?t=N7T8https://www.lfzxb.top/nkgmoba-totaltabs/

战斗流程

在dota2中的战斗流程,大概总结如下

1,检查是否可以施放技能(普通攻击视为一种特殊的技能)(检查MP,是否被沉默,是否被缴械,目标是否是技能目标等)

2,选中目标/区域,角色开始进行施法前摇

3,施法前摇结束,再次检查是否可施放技能,然后施放技能

4,技能根据触发方式(飞行道具碰撞、AOE范围等)来决定受击方

5,根据攻击/受击双方属性、BUFF状态计算技能结果。

从这个流程我们抽象出几个对象

1,战斗实体CombatEntity:战斗中角色的抽象,一个战斗实体应该包含战斗所需要的数据,相应的能力逻辑组件(如移动能力,施放技能能力等,对应状态的眩晕沉默等来实现禁止移动、禁止施法)

2,战斗行为CombatAction:作为系统战斗逻辑的处理,对攻击力、护甲如何换算为伤害的换算公式和处理在这个类中。

3,技能释放器, 施放技能,确认命中,触发实施战斗行为计算

4,

在战斗实体下面,又有几个主要的组件

1,能力Ability,移动的能力,攻击的能力,使用技能的能力,修改属性的能力(比如禁止回血),使用装备的能力等等,有了能力这个抽象层级,我们不需要在entity里塞进很多的方法最后导致类的膨胀和难以维护,也对

2,效果管理器 EffectManager 控制效果的添加、移除、更新等逻辑

3,属性  提供基础属性、BUFF、装备的加减乘除等计算,输出结果

暂时想到这么多,后面开始随写随改。

猜你喜欢

转载自blog.csdn.net/NerfmePlz/article/details/132554859