Unity TimeLine丨A2.给TimeLine添加人形动画、动画播放位置设置、Track

一、给TimeLine添加人形动画Unity TimeLine丨A2.给TimeLine添加人形动画、动画播放位置设置、Track

通过GIF我们可以发现,因为TimeLine设置了开始动画和Pre-Extrapolate的原因,点击游戏对象TimeLine和其他游戏物体产生不同的结果。即二者相互独立,TimeLine内保存模型的状态信息,展示的效果自然不同


将人形Perfab拖到场景(非原点),并赋值给GameObject的TimeLine

可给人形的动画添加简单的位移等动画,但实际骨骼运动无法添加,还是依靠自身动画导入到TimeLine的Track

Unity TimeLine丨A2.给TimeLine添加人形动画、动画播放位置设置、Track



二、动画播放位置设置

但我们会发现,人物播放完第一个动画后,不是在当前位置播放下个动画,而是自动回到原点播放第二个动画

解决方案一:

解析Root Motion的理论:

比如说我们有一个人物行走的动画,我们来考虑一下几种情况(这里以“Root transform position(XZ)为例)

1、勾选”Bake into Pose",不勾选“Apply Root Motion",勾选”Bake into Pose"后,变换属于Body Transform,所以即使这里未勾选”Apply Root Motion“,但是动画依然会在场景中体现,人物会按照动画的路径行走(但是如果我们观察Inspector中模型的position参数,值一直不变)。但是因为没有勾选Apply Root Motion,所以动画结束后,变换不会应用到模型,所以如果这时候,如果开始一个新的动画的话,模型会瞬间回到起始位置(新的动画开始时候,模型处于行走动画开始时的位置)。

2、勾选”Bake into Pose",并勾选“Apply Root Motion",这里跟上面的情况唯一不同的就是,动画结束后,开始新的动画之前,变换会应用到模型。(模型的position在新的动画开始之前会发生变化,新的动画开始时候,模型处于动画结束时的位置

3、不勾选”Bake into Pose",勾选“Apply Root Motion",这时候,变换是作为Root Transform,所以因为这里勾选了Apply Root Motion,变换会应用到模型(模型的position跟着动画不停的变化),自然,新的动画开始时候,模型处于动画结束时的位置。

4、不勾选”Bake into Pose",并且不勾选“Apply Root Motion",这里变化还是作为Root Transform,但是因为没有勾选Apply Root Motion,所以变换将不被应用,所以模型将一直在本地不动,自然,新的动画开始时候,模型处于行走动画开始时的位置

解析文字参考自博客xak

Add:模型Animator Controller最初为空,我们也可给模型添加Animator Controller,由状态机控制TimeLine对应模型空白处的动画(非空白处,即我们录制的动画处,由我们录制的动画控制,而非融合)

注:上述理论要加Animator Controller状态机,尤其是在控制下个动画开始,要从上个动画结束的位置开始,必须加上。无论它是否Bake into Pose

bake into pose的对应的属性(例如:root transform rotation),将会直接由角色或物件的自身transform的rotation来决定角色方向(如由script直接驱动角色transform rotation角度令角色转身,适合的动画是原地踏步),反之就是用animation 本身的信息来驱动角色transform rotation(适合动画是转身动画本身就带动角色转动,如转45度转身动画,90度转身动画等)


解决方案二:

任意选择是否勾选Apply Root Motion

1、点击TimeLine中需要控制的动画轨道,在其Inspector上勾选Apply Track Offsets,它可用来设置物体开始的偏移(位置、旋转),物体中的每个动画便从此处开始运动

但是每个动画都从此位置开始运动,而不是从上个动画末尾处开始运动,我们给他加一个Animator Controller便可解决此问题,亦或者设置每个动画Inspector的Clip Root Motion Offsets值,改变每个动画初始位置


结合Pre-Extrapolation应用会更有意思



三、Track

Activation Track:控制该物体是否被**,通常用来设置照相机是否**(时间)

Animation Track

Audio Track:音频轨道

    刚添加时,它是没有属性指定物体的Unity TimeLine丨A2.给TimeLine添加人形动画、动画播放位置设置、Track

    他指定的物体可用来控制此音频声音大小等内容。首先我们需要创建一个符合此类型的物体,即给物体添加Audio Souce组件

Unity TimeLine丨A2.给TimeLine添加人形动画、动画播放位置设置、Track