Unity战斗框架 技能框架


在这里插入图片描述

Demo获取地址*:

https://download.csdn.net/download/qq_28474981/11834184

1.简介

该框架基本可以概括为以下这句话:
释放某技能后,先左斩一下(播个动画放个特效),触发怪物浮空,再点一下,右斩一下(播个动画放个特效),触发怪物掉血伤害

  1. 先左斩后右斩,说明技能需要是一个链状的触发结构
  2. 再点一下,技能链间需要有对应的连接器,检测连接条件
  3. 播放动画、音效,说明需要其具体的处理器
  4. 触发伤害,说明需要拥有时机
  5. 触发浮空或掉血伤害,说明需要有多种伤害的触发方式

2.技能对象

2.1 技能触发

  1. 技能释放器:用于技能触发、包含技能链之间的链接逻辑,是一个技能的入口
  2. 技能链连接器:用于检测技能链单元之间的连接条件,如果不满足,则到该单元就中断,如满足,则进入下一个单元

2.2 技能执行

2.2.1 技能单元处理器

所有单元处理器结束后,该技能单元才算结束

  1. 动画技能单元处理器
  2. 时间技能单元处理器
  3. 特效技能单元处理器

    可自行扩展

2.3 技能接受

  1. 伤害触发器:做触发时机的监听,当触发时通过技能所提供的区域获取该范围内的技能接收器
  2. 技能接收器:做技能的接收,然后按照对应的伤害类型触发伤害解算器
  3. 伤害解算器:通过伤害类型相对应的参数触发伤害,要求该接收器具有对应的受伤害能力
  4. 受伤害能力接口:例如减HP、浮空,需要实现对应的受伤害能力

2.开发流程

2.1 技能数据配置

  1. 通常开发都是数据驱动的:
    (1)技能链数据:
    在这里插入图片描述
    (2)技能单位数据:
    在这里插入图片描述
  2. 使用Excel主要是为了方便配置人员配置,在程序上应当转化为效率较高的数据格式,即ScriptableObject

在这里插入图片描述
在这里插入图片描述

2.2 技能数据读取

这里主要直接使用Resources.Load
在这里插入图片描述

2.3 技能发射器初始化

  1. 根据ID取得对应的数据,设置到技能发射器中
    在这里插入图片描述

  2. 发射器内部会根据技能数据中的技能链数据创建技能单元出来(动、静态数据要做到分离)

  3. 根据对应的技能会初始化对应的技能处理器,然后再添加进同步容器中(所有处理器都处理完后该技能单元才算结束)
    在这里插入图片描述

  4. 此时伤害触发器也在其中初始化了,主要负责时机和区域的提供
    在这里插入图片描述

2.4 技能发射器触发

  1. 使用对应的发射器开始发射
    在这里插入图片描述
  2. 如果技能是未被触发的,会检测技能链的触发条件是否满足,如果技能是进行状态的,则会进行连接器的检测(例如连击的判断,如果没有在一阶段的状态下继续点击,则退出该技能)
    在这里插入图片描述
  3. 一旦进入执行状态,则会触发技能单元处理器
    (1)动画处理器:
    根据动画的执行事件来判断是否结束

(2)时间处理器:
根据是否超时来判断是否结束

(3)特效处理器:
根据特效是否加载结束判断是否结束


可以通过在技能发射器中去写定究竟是以哪一个处理器结束为准

2.4 技能伤害触发

  1. 技能伤害的触发主要由配置来决定:
    目前主要是根据时间和根据特效触发两种
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 这里着重讲一下根据特效触发,特效加载时会在特效身上取得一个特效控制器基类,继承于这个基类的都将实现对应的伤害触发时机和伤害区域获取接口
    在这里插入图片描述
  2. 这样特效就可以根据是使用时间,还是使用Unity的触发器来进行触发在这里插入图片描述
  3. 触发完后也可以根据具体的返回伤害区域
    在这里插入图片描述
  4. 伤害区域将会交由环境系统去计算,返回该范围内的技能接收器,并接受这个技能
    在这里插入图片描述
    6.技能接收器会根据对应的伤害类型触发对应的受伤能力
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值