Unity3D 战斗技能系统架构

来源:互联网 发布:淘宝卖人参 编辑:程序博客网 时间:2024/05/16 06:30

大家在玩游戏的时候,经常会看到各种技能特效,远近攻击,非常绚丽,角色的打击感非常吸引玩家,其实这就是我们通常说的战斗技能系统,大家如果第一次去实现这个战斗系统,可能感觉无处下手,再被策划的文案一搞,云里雾里,在这里我就跟大家简单的说一下如何架设技能系统。

   在实现战斗系统的时候,首先大家思路一定要明确,知道如何去架设,在不知道如何实现不要忙于写代码,想清楚了再写。

   那现在我们假设实现一个枪战的战斗系统,首先会有各种***,***发射的***是不同的,决定了他的破坏程度是不同的,这就涉及一个***与被击打物体的特效。那我们如何去设计?

   先给大家看一下已经实现的效果图:

  

wKioL1Sh5_OQkctKAAKTrc1BqM8937.jpg

wKiom1Sh50CjRF3NAAJxISf_A20648.jpg

接下来我们开始架构我们的技能。

首先我们针对武器和破坏,这两个设计两个基类,为的是扩展不同的武器,以及扩展不同的破坏程度。

代码如下:

wKioL1Sh6MrCL03lAABx-sgMyzk944.jpg

以上是Damage的基类我们定义了四个参数,一个是释放的特效,第二个是自己,第三个是破坏程度,第四个是破坏的目标。

我们的破坏类就要继承于这个基类方便扩展,比如我们的设计代码是这样的:

wKiom1Sh6VaC1FyHAAEV-DeZxI8026.jpg

首先要有判断是否爆炸,以及爆炸的半径,破坏力度,激活时间等,只要一旦涉及到力度,大家应该立刻想到使用Rigibody这个刚体插件。当然这个函数里还有破坏的函数,在这里需要有一个碰撞体检测,就是说导弹碰到需要破坏的物体需要根据其碰撞体进行检测。

wKioL1Sh6vGjtoLzAAEgHbRYv_Q221.jpg

wKiom1Sh6j7iMHe0AACN_V8-5vo245.jpg

我们需要根据碰撞体去检测是否发生了碰撞,通过OCollisionEnter进行判断碰撞体是否发生了。

为了调用方便我们实现了一个DamageManager管理类

wKioL1Sh64mxS_DCAADbd219h5w397.jpg

用于判断其是否死亡。

接下来我们需要设计武器基类:

wKioL1Sh68awNVaiAACNelK8uug548.jpg

这上面也有一些参数,目标,速度轴等吧。那么我们武器的实现也是继承这个类。

wKioL1Sh8FninyojAAHIYFmME2o884.jpg

武器系统的设计就完成了,接下来我们需要设置武器控制类

wKiom1Sh7zTgbuToAAF_EvXXJhk707.jpg

用于发射武器,同时我们需要武器发射类,对于这个类的设计,我们也将其继承于武器基类,其实这个可以独立实现:

wKiom1Sh8B3zUeLcAAH17EGNBlo991.jpg

爆炸的时候,需要涉及到特效的使用,如果整个都是粒子的话,我们不需要脚本控制,如果不是粒子我们需要脚本控制,也就是爆炸类:

wKioL1Sh8X_iDagXAAGjpinChgU750.jpg爆炸类需要绑定到特效上的,一个简单的武器系统就完成了。其实复杂的技能系统只是按照这个思路进行扩展,简单的技能系统实现了,复杂的也不会远了。


0 0
原创粉丝点击