角色动作
玩 3D 游戏时,经常会看到游戏中的 3D 角色非常绚丽的动作表现,游戏中的角色动作主要是通过美术制作完成。
制作方式有如下两种:
通过动作捕捉,然后再由美术人员根据捕捉到的数据完成美术制作。
美术利用 Max 或者 Maya 工具直接制作完成。
相比前者动作比较逼真,成本也高。我们这里不讨论使用哪种方式,对于动作类游戏,吃鸡游戏的角色动作是最多的。
它包括:跑,走,跳,翻墙,趴下,驾驶载具,扔手雷,装备不同的枪械,使用不同的枪械射击动作,救护,拾取弹药装备等等。
我们将其分成两类:
一类是按照动作要求全部把动作做一遍,工作量是相当大的,因为你不但要制作还要维护这些动作。
另一种是采用引擎提供的动作融合技术,这需要我们将动作进行分类,目的是减少一部分动作的制作,这种是最优的方案。
动作融合
不论是虚幻引擎、Unity 引擎还是自研引擎,成熟的引擎都会提供动作融合技术。
Unity 为我们提供了动作状态机,鉴于吃鸡游戏动作的复杂性,上图是我们模拟实现了一下,我们在这里将动作进行了分类,分几层无所谓关键是能解决问题就可以。
我们这么分的原因是方便对角色动作进行融合,层与层之间的播放可以设置优先级播放,也可以同时播放,这样我们就可以实现动作的融合了。
我们为什么这么分层?如果使用一层来实现角色动作状态机,这么多动作显得非常臃肿而且动作之间的转换非常复杂,灵活性不够,让开发者很容易深陷其中,逻辑很难理顺。
所以我们采用了分层的策略,这样动作的播放顺序,动作的融合在逻辑方面会很清晰。
首先看 Base Layer,它是最核心的层,该层主要实现的是角色基本动作的播放。
我们将 Base Layer 层设为父类,再看 OnlyArms 层,它继承于 Base Layer。OnlyArms 层主要是在 Base Layer 层的基础上做了一个扩展,比如加了一个角色拿不同的武器待机状态,继承原理跟 C++,C# 等面向对象语言的继承方式类似。
另外,UpperBody 层主要是针对角色上半身的动作状态机,便于与 Base Layer 或者 OnlyArms 层做动作融合,UnderBody 跟 UpperBody 类似,它是下半身的动作状态机。
更多unity2018的功能介绍请到paws3d爪爪学院查找。链接https://www.paws3d.com/learn/,也可以加入unity学习讨论群935714213
近期更有资深开发人士直播分享unity开发经验,详情请进入官网或加入QQ群了解