12.1 时间轴
timeline由多个轨道组成
轨道之间的动画是协同配合的关系
下面是animation 是对某个轨道的动画片段的编辑
在unity中实现:
创建一个空物体命名为,并为其添加上window-sequence-timeline
在场景中添加两个thirdperson controller
然后可以为其添加上走路的动画
12.2 简单动画
除此之外,还可以点击录制按钮
(相机使用的是activation track
12.3 人物动画
接下来来实现人物动画
有个问题是如果移动人物的话,我们希望会对动画造成影响,那么就不应该在hierachy进行修改(此时修改移动到别的地方,动画不会有影响),而是在这里修改:
但是此时会发生人物做完第一个动画移动位置后会瞬移会第二个动画开始的地方,就是位置不是连续的,此时我们可以选中动画然后加这个:
这样就不会出现“瞬移”现象
之后为了让人物的动作变化具有过渡性,可以添加这个:
12.4 脚本控制
control track可以控制游戏物体的时间相关的内容,可以在这上面控制另外一个playerdirector,也就是说可以在一个timeline上改变另外一个timeline,还可以改变有关粒子系统的一些时间控制。
比如说可以改变粒子系统的时间,实例化一个预制件,或者添加一个粒子系统预制件
接下来在unity中实现
然后创建一个timelint_controller脚本
注:
使用这一个头文件后便可以在脚本中使用事件变量,然后就会在这里出现这样的选项
然后在这里给它添加一个事件,就是轨道的播放这个事件
接下来取消timeline的play on awake
接下来建立另外一个脚本来进行更详细的控制:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.UI;
public class MyPlayerAssests : PlayableAsset
{
// Start is called before the first frame update
public ExposedReference<Text> myText;
public override Playable CreatePlayable(PlayableGraph graph, GameObject owner)
{
//MyPlayableBehaviour是自己创建的类,调用create函数用参数graph创建
var playable = ScriptPlayable<MyPlayableBehaviour>.Create(graph);
playable.GetBehaviour().status = myText.Resolve(graph.GetResolver());
throw new System.NotImplementedException();
}
}
public class MyPlayableBehaviour : PlayableBehaviour
{
public Text status;
public override void OnBehaviourPlay(Playable playable, FrameData info)
{
base.OnBehaviourPlay(playable, info);
if (status != null)
{
status.gameObject.SetActive(true);
status.text = "Playing";
}
}
public override void OnBehaviourPause(Playable playable, FrameData info)
{
if (status != null)
{
status.text = "End playing";
}
base.OnBehaviourPause(playable, info);
}
}
回到unity为playable track添加上这个
然后便可以看到,当运行的时候,text会是playing状态
结束时便会变成end playing
playable的定义:
Playables are customizable runtime objects that can be comnected together and are contained in a PlayableGraph to create complex behaviours.
可播放项是可自定义的运行时对象,可以将它们组合在一起,并包含在PlayableGraph中以创建复杂的行为。
PlayableGraph的详细解释: PlayableGraph.
PlayableGraph
PlayableGraph 定义一组绑定到 GameObject 或组件的可播放输出项。PlayableGraph 还定义一组可播放项及其依赖关系。图 1 提供了一个示例。
PlayableGraph 负责管理可播放项及其输出的生命周期。使用 PlayableGraph 可创建、连接和销毁可播放项。
12.5. Cinemachine
接下来我们在unity中安装cinemachine包
并且添加一个下图所示的组件,然后让其跟随和look at其中一个物体
然后将main camera拖拽至timeline 并为其添加cinemachine shot
然后将相机拖拽至timeline的那个shot所需的virtual camera
然后我们拖拽时间轴便可以看到效果
接下来我们添加另外一种cinemachine
推拉摇移轨道式camera
然后接下来我们再为其添加一个cinemachine shot
此时可以看到这个摄像机也会跟随cube进行follow和lookat 但是限制的是移动的范围只有在轨道上
此时,播放完第一个cinemachine镜头就会进入第二个cinemachine镜头
此时如果加入在动画中加入过度
便可以使得镜头自然而然的在两个镜头间进行转换
转场效果展示:
(ohhhhhhhhhhhhhhhhhh感觉有了电影镜头转场和游戏过场动画那味了!!
总结:通过这章节的学习便可以学会简易过场动画的创作