Unity3D 战斗技能系统架构
大家在玩游戏的时候,经常会看到各种技能特效,远近***,非常绚丽,角色的打击感非常吸引玩家,其实这就是我们通常说的战斗技能系统,大家如果第一次去实现这个战斗系统,可能感觉无处下手,再被策划的文案一搞,云里雾里,在这里我就跟大家简单的说一下如何架设技能系统。
在实现战斗系统的时候,首先大家思路一定要明确,知道如何去架设,在不知道如何实现不要忙于写代码,想清楚了再写。
那现在我们假设实现一个枪战的战斗系统,首先会有各种***,***发射的***是不同的,决定了他的破坏程度是不同的,这就涉及一个***与被击打物体的特效。那我们如何去设计?
先给大家看一下已经实现的效果图:
接下来我们开始架构我们的技能。
首先我们针对武器和破坏,这两个设计两个基类,为的是扩展不同的武器,以及扩展不同的破坏程度。
代码如下:
以上是Damage的基类我们定义了四个参数,一个是释放的特效,第二个是自己,第三个是破坏程度,第四个是破坏的目标。
我们的破坏类就要继承于这个基类方便扩展,比如我们的设计代码是这样的:
首先要有判断是否爆炸,以及爆炸的半径,破坏力度,激活时间等,只要一旦涉及到力度,大家应该立刻想到使用Rigibody这个刚体插件。当然这个函数里还有破坏的函数,在这里需要有一个碰撞体检测,就是说×××碰到需要破坏的物体需要根据其碰撞体进行检测。
我们需要根据碰撞体去检测是否发生了碰撞,通过OCollisionEnter进行判断碰撞体是否发生了。
为了调用方便我们实现了一个DamageManager管理类
用于判断其是否死亡。
接下来我们需要设计武器基类:
这上面也有一些参数,目标,速度轴等吧。那么我们武器的实现也是继承这个类。
武器系统的设计就完成了,接下来我们需要设置武器控制类
用于发射武器,同时我们需要武器发射类,对于这个类的设计,我们也将其继承于武器基类,其实这个可以独立实现:
爆炸的时候,需要涉及到特效的使用,如果整个都是粒子的话,我们不需要脚本控制,如果不是粒子我们需要脚本控制,也就是爆炸类:
爆炸类需要绑定到特效上的,一个简单的武器系统就完成了。其实复杂的技能系统只是按照这个思路进行扩展,简单的技能系统实现了,复杂的也不会远了。