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、装备的加减乘除等计算,输出结果

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
编写 Unity战斗框架需要考虑多个方面,包括战斗场景设计、角色属性管理、技能系统、伤害计算等等。以下是一个简单的战斗框架实现步骤: 1. 设计战斗场景。根据游戏需求设计出战斗场景,并在 Unity 中创建相应的场景。 2. 创建角色。在 Unity 中创建角色,包括角色的模型、动画和属性等。根据游戏需求选择不同的角色类型,例如战斗士兵、法师、弓箭手等。 3. 管理角色属性。为每个角色添加属性组件,包括生命值、攻击力、防御力等。在角色受到攻击时,根据攻击者的属性计算出受到的伤害值,然后减去生命值。 4. 设计技能系统。在 Unity 中创建技能系统,包括技能的触发条件、技能的效果和技能的消耗等。根据游戏需求设计出不同的技能类型,例如攻击技能、防御技能、治疗技能等。 5. 触发技能。在角色受到攻击或者主动释放技能时,触发相应的技能效果。根据技能的触发条件和效果,在角色身上添加相应的状态,例如冰冻、昏迷、中毒等。 6. 计算伤害。在技能效果中计算伤害值,并减去目标角色的生命值。根据游戏需求设计出不同的伤害计算方式,例如基于攻击力和防御力的计算、基于元素属性的计算等。 7. 处理战斗结果。在战斗结束时,根据游戏规则计算出胜负结果,并展示相应的结算界面。 以上是一个简单的战斗框架实现步骤。在实际开发中,还需要考虑各种异常情况的处理和优化性能等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值