Advanced Programming: Unity Game Dev Course(2)-Combat System

本文详细介绍了Unity游戏开发中的战斗系统,包括创建战斗模块、装备和使用武器、添加战斗效果,以及完善系统。内容涵盖攻击框架、武器装备、角色交互、战斗反馈、敌我攻防机制,最后讨论了魔法飞弹和AOE攻击的实现。通过这些,玩家和敌人可以进行互动,提升战斗体验。
摘要由CSDN通过智能技术生成

 

1.Creating the Combat Module

主要介绍:

战斗框架和具体实现

 

具体实现:

该教程的战斗框架。

Attack仅定义包含一个int名为Damage和一个bool名为IsCritical的类。

AttackDefinition定义攻击所需数值比如范围暴击几率等,并返回Attack类型方法计算确定最终damage和iscritical,类似ItemDefinition_SO,player和enemy通用。

IAttackable为接口,内含一个方法,表示所有使用该接口的类在被攻击时做些什么,比如生命值减少,播放被攻击动画和音效等等。此教程里是发送Log显示攻击对象名称和攻击值。player和enemy通用。

 

 

Scripts文件夹下新建文件夹Monobehaviours和ScriptableObjects,新建脚本Attack,作用是定义Attack类的type,这个type包含一个int Damage,一个bool IsCritical。这两个值只能在类内定义,类外只读。

 

然后打开在Beginner Programming: Unity Game Dev Course(5)- Creating a Character Stat System教程里提到的CharacterStat脚本修改,获得character当前的基础damage和抗性。注意Character在教程里player和enemy共用。

 

接下来在ScriptableObjects文件夹下新建脚本AttackDefinition,它继承自ScriptableObject。该脚本定义Attack行为需要的基本数值,包含了一个通过基本数值计算最终damage,并传出上面定义的Attack类型的damage和isCritical。

 

然后在项目里新建AttackDefinition,并命名为DemoAttack作为Player的Attack类型,在此处先不挂载,我们继续写脚本。

 

新建脚本IAttackable脚本,它是一个接口,用于之后测试并显示Attack的对象名称及具体数值。

 

Monobehaviours文件夹下新建脚本AttackedDebug,此例用来被攻击后显示Log。比如生命值减少,播放被攻击叫声,动画之类都可以写在此处。同样player和enemy都可共用。

 

场景里新建一个Cube作为被攻击测试对象,挂上Rigidbody,Layer选择Clickable,挂上刚写的脚本AttackedDebug

 

然后打开之前教程Beginner Programming: Unity Game Dev Course(4)- Swords and Shovels Character Controller and AI写的MouseManager脚本修改,为了改变攻击时的光标样式,以及把点击对象传递到攻击者。

先新建Unity事件

 

然后定义事件

 

修改点击方法

 

然后修改同教程里的HeroController脚本,用来计算攻击值并触发被攻击者身上的OnAttack方法,这个方法是一系列被攻击后的逻辑,此例只显示log。

 

回到Unity,在MouseManager上触发HeroController上新写的方法

 

然后把之前建的AttackDefinition拖入Hero

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值