Unity Animator Layer设置动画混合

具体如何实现呢,且听慢慢道来。
举个栗子:现在跑酷游戏有个需求,人物在跑动时如果吃到磁铁道具的话需要举着磁铁奔跑,有多种实现方法,比如多加一个状态机,但是人物跳的时候也要举着磁铁,也多加一个状态机,让美术多出一个举着磁铁跳的动画,然后吃到磁铁的时候setTrigger(“magnetRun”)(我上个项目就是这么干的,说实话很傻),然后问题就来了,那人物跳的时候怎么办,模型总不能拿着磁铁跑然后跳起来磁铁就被藏起来了。好,你说再加一个状态机,那左移怎么办,右移怎么办,普通状态和道具状态是完全不同的两套动作,这时你发现你需要多写一套完全相同的逻辑,这样按照我们老大的话是极其low的,代码极其丑陋。这时你发现了一个神奇的小东西layer,什么东东,有什么用。
先上Unity官方的定义,取自Unity圣典
“Unity使用“动画层”来管理身体不同部分的复杂状态机。比如:你可以使用下半身(动画)层来管理走动/跑动;使用上半身(动画)层来控制投掷/设计动作。”( oh shit 简书更改不了字体大小 将就着看吧)
还是刚才的那个例子,这时你要完成一个人物举着磁铁奔跑的需求,你只需要增加一个layer,就叫magnet(磁铁)在里面加一个空的状态机为默认的,增加一个状态机叫magnet,增加一个trigger--magnet,当人物吃到磁铁的时候,settrigger("magnet"); 这时你神奇的发现动画完美的混合了,不管这个人是在做什么,跑,跳,倒,转弯,都会乖乖的举着磁铁。

如果你失败了,你会发现我写的不全,还有一系列属性需要设置,自己去百度吧,很简单的,注意设置avataMask的时候如果你的模型不是humanoid,简单地设置hunmanoid无效,你需要设置transform。
就这样,不用谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容