在Unity中制作完整的技能系统(介绍篇)

这篇具有很好参考价值的文章主要介绍了在Unity中制作完整的技能系统(介绍篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 系统结构介绍

首先我们需要对技能中的部分进行一个划分。通过观察,我们不难发现,在多个技能中经常有一些相同的内容(以下的例子均来自于《英雄联盟》):

火男被动的燃烧一定时间持续伤害和提莫的E技能中毒一定时间持续伤害,效果是相同的吧。

女枪的R技能和男刀的W技能都是都扇形范围内的敌人进行伤害(这里我们只看形状)。

所以,这些可能会在不同技能中重复的部分我们就可以单独提出来做好。

但是做好了之后,由谁来决定这个技能是什么效果、什么形状呢?这里就需要将一系列的数据都放在一个技能数据中来,再将一个一个的技能数据放到玩家的技能管理器中统一进行配置和管理。而不同技能之间也有近战释放,远程释放等不同释放方式,因此我们还需要一个控制相同释放方式的技能释放器。

到现在大体上我们就将一个简单技能系统的结构给拆解出来了。

在Unity中制作完整的技能系统(介绍篇)

技能系统的各个模块有了,那么玩家释放一个技能的流程是怎么样的呢?

换个说法就是这些模块之间是怎么互相调用的?

每个玩家身上都有一个技能管理器,当中存放好了玩家所有的技能。玩家要释放技能时,管理器会通过调用对应技能释放器来执行技能数据中设置好的范围选择算法和效果算法(这里用到了释放器配置工厂),选择好规定范围中的敌人后赋予效果。

在Unity中制作完整的技能系统(介绍篇)

 

 

这个技能系统并不会用到行为树或者TimeLine一类的工具,只是给大家一个对技能系统的初步认识。但与此同时,这个技能系统也有很好的扩展性,而且所有与技能相关的内容都是通过技能数据来获取且实现的。

接下来就让我们以火球技能为例子来一步一步使用这个系统。

范例1:制作火球技能

简单说就是:朝指定方向发射一枚自动飞行的火球,攻击到敌人之后造成伤害并消失。

第一步:将火球的预制体放入Resource文件夹下的SkillPrefab文件夹中去,将预制体重命名为FireBall(方便填写数据),并将释放技能时要播放的动画也放到玩家角色的Animator中,并重命名。

在Unity中制作完整的技能系统(介绍篇)

第二步:在玩家操作的角色身上挂载好CharacterSkillManager脚本,该脚本就是负责角色所有技能数据存储、技能初始化、释放技能等。在该脚本中存在一个技能数据列表,接下来我们就在这填写我们的数据。 

在Unity中制作完整的技能系统(介绍篇)

 

填写之前让我们进一步想想火球技能的具体表现形式:

从玩家角色处朝前方发射一枚自动飞行的火球,玩家消耗法力值,火球飞行一段距离后自动销毁,如果在飞行过程中碰到了敌人也自动销毁对敌人造成伤害。

是不是差不多了?

知道这些后来填写数据吧。

ID,Name,Description,CD,CostMp,其中ID不能出现重复。
Attack Distance不是我们理解的施法距离(飞行距离),而是火球发射后,以火球为中心、判断是否碰到敌人的距离。同理Attack Angle也是一样的,火球所有角度都可以检测敌人,因此填写值为360。
Attack Target Tags也就是技能攻击的目标上的标签(Tag),这里我们填写敌人的便签Enemy。
Impact Type是技能中会进行的执行效果的算法名字,根据算法的名字来找到对应算法并在特定条件下执行。这里就填写上CostMp(扣除玩家法力值),Damage(对敌人造成伤害)。
Next BatterId是用于进行技能之间的连击的,暂时用不到。
Attack Num是伤害值(非伤害技能也可以是回复值,护盾值),Duration Time是技能持续时间,Attack Interval是间隔时间(用于持续攻击,持续回复,定时查找敌人等)。
Prefab Name技能预制体名字,通过名字加载预制体,所以我们填上上一步准备的预制体名。Animation Name通过动画名字播放动画,填好上一步的动画名。Hit Fx Name是特效的名字,这里也暂时用不到。
Level技能等级(默认为0)。Attack Type是技能的作用是单体伤害还是AOE伤害,火球只会攻击第一个接触他的敌人,所以选择Single就万事OK啦。
Selector Type是技能可检测对象的范围算法名,根据这里的类别名称生成对应的算法检测敌人。这里就选择Sector类别。可能大家会有疑问,火球不是一圈的敌人都可以攻击吗?其实360度的扇形不就是圆嘛,所以这里是可以通用的。
Skill Indicator是技能指示器的名字,Skill Icon Name是技能图标名(暂时用不上)。
Disappear Type是技能消失的方式:检测到敌人就消失or持续时间到了消失。由于火球是攻击到敌人以后就消失,所以我们这里选择CheckOver。
第三步:编写技能需要调用的效果算法和指定范围目标选择算法。

第四步:给技能预制体挂载对应的技能释放器脚本。火球技能是远程释放的,所以这里我们挂载上RemoteSkillDeployer脚本。在释放器的作用就是找到并调用效果算法和目标选择算法。

第五步:给玩家编写一个控制脚本,负责生成技能。文章来源地址https://www.toymoban.com/news/detail-431889.html

范例2:制作剑阵技能

剑阵技能就是在玩家角色为圆心生成一个圆形伤害区域,在该区域中的敌人会持续受到伤害,到时间之后就自动消失。

第一步:将剑阵的预制体放入Resource文件夹下的SkillPrefab文件夹中去,将预制体重命名为Rotating(方便填写数据),并将我们释放技能时要播放的动画也放到我们玩家角色的Animator中,也将其重命名。

第二步:同样在CharaterSkillManager中配置好剑阵技能的数据。

在Unity中制作完整的技能系统(介绍篇)

 

重点说一下不同的地方。这个剑阵技能需要持续对范围内的敌人造成伤害,所以Disappear Type是选择TimeOver并且Attack Type选择Aoe伤害。由于是以玩家角色为中心释放的技能,所以也不需要填写Skill Indicator技能指示器。其他各项数据可以根据自己的需求填写。

第三步:编写好技能需要调用的效果算法和指定范围目标选择算法。

第四步:给技能预制体挂上对应的技能释放器脚本,剑阵是在角色脚下释放生成的,所以这里我们挂载上MeleeSkillDeployer脚本。在释放器的作用就是找到并调用效果算法和目标选择算法。

第五步:给玩家编写一个控制脚本,负责生成技能。

到了这里,关于在Unity中制作完整的技能系统(介绍篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 系统架构设计专业技能 · 计算机组成与结构

    现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 点击进入系列文章目录 运算器 ① 算术逻辑单元ALU:数据的算术运算和逻辑运算 ② 累加寄存器AC:通用寄存器, 为ALU提供一个工作区, 用于

    2024年02月09日
    浏览(54)
  • 系统架构设计专业技能 ·结构化需求分析 - 数据流图

    现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 点击进入系列文章目录 实体 实体可能是: (1)人物角色: 如客户、管理员、主管、经理、老师、学生 (2)组织机构 :如银行、供应商、募捐机

    2024年02月09日
    浏览(54)
  • Unity通用Buff系统,Buff编辑器(1,理论篇)(技能系统之Buff篇)

    @TOC Buff系统是指给玩家或NPC提供临时的增益效果的一种机制。它可以通过提升玩家角色的能力、增加属性值、提供额外技能或提供其他有益效果来改变游戏的动态。以下是一些关键的Buff系统设计方面: Buff类型:Buff的类型可以包括增加攻击力、防御力、生命恢复速度、移动速

    2024年04月17日
    浏览(30)
  • win11系统AVA2.1数据集制作、训练、测试、本地视频验证(完整已跑通)

    本文参照杨帆老师的博客,根据自己的需要进行制作,杨帆老师博客原文链接如下: 自定义ava数据集及训练与测试 完整版 时空动作/行为 视频数据集制作 yolov5, deep sort, VIA MMAction, SlowFast-CSDN博客 文章浏览阅读2.2w次,点赞31次,收藏165次。前言这一篇博客应该是我花时间最多

    2024年02月19日
    浏览(54)
  • matlab信号分选系统算法-完整算法结构

      针对得到的脉冲流PDW进行信号分选,包括重频恒定、重频抖动、重频参差和重频滑变四种脉间调制类型。   这里我们先进行数据的仿真,后续边仿真边分享思路:首先根据信号类型,分别产生重频恒定、重频抖动、重频参差和重频滑变共四部雷达,雷达参数如下   

    2024年01月16日
    浏览(51)
  • ble系统知识介绍(较为完整,持续更新中)

    现在网上关于BLE系统的学习资料实在是太少了,因此本文希望能够聚集一些资料能够系统的入门BLE,本文翻译自Bluetooth_LE_Primer_Paper,还有一些网上的一些资料,如果侵害到了某些作者的权益请及时联系我 https://blog.csdn.net/XiaoXiaoPengBo/article/details/115475793 https://www.youtube.com/watch?v=eZ

    2024年02月08日
    浏览(33)
  • Unity—对话系统&&GalGame游戏文字对话制作

    每日一句:人间总有一两,填我十万八千梦 目录 对话系统 文本逐字打印功能 GalGame游戏(美少女游戏)文字对话 被触发物体(挂载脚本)下UI,先不激活 public   class   TalkButton  : MonoBehaviour {      public  GameObject tipshow; //提示UI      public  GameObject talkUI; //对话UI     

    2023年04月22日
    浏览(47)
  • B2:Unity制作Moba类游戏——聊天系统

    一场游戏对局中,和队友进行 友好的有礼貌的有效的沟通 可以极大提升对局胜率。在LOL国服,打字和队友聊天沟通战术是非常常见的行为: 语言的力量是无限的,甚至可以和外国小伙伴效沟通战术:       聊天系统制作起来非常简单,只要熟练掌握C#的TCP通讯协议即可,然

    2024年02月10日
    浏览(33)
  • [Unity] GraphView 可视化节点的事件行为树(二) UI Toolkit介绍,制作事件行为树的UI

    目录 前文 UI Toolkit 介绍 制作事件行为树的UI界面 GameObject关联编辑器窗口 [Unity] 使用GraphView实现一个可视化节点的事件行为树系统(序章/Github下载)_Sugarzo的博客-CSDN博客_unity graphview [Unity] GraphView 可视化节点的事件行为树(一) Runtime Node_Sugarzo的博客-CSDN博客         在上一

    2024年02月03日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包