Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

使用 AnimationTree

前言

通过 AnimationPlayer,Godot 拥有你在所有游戏引擎中能找到的最灵活的动画系统之一。几乎可以在任何节点或资源中对任何属性进行动画处理,以及专门的变换、贝塞尔、函数调用、音频和子动画轨道,这样的能力相当独特。

然而, 通过 AnimationPlayer 混合这些动画的支持相对有限, 只能设置固定的交叉渐变过渡时间.

AnimationTree 是Godot 3.1中引入的一个新节点, 用于处理更高级的变换, 它取代了旧的 AnimationTreePlayer , 同时增加了大量的功能和灵活性.

创建动画树

首先, 必须明确 AnimationTree 节点不包含它自己的动画. 相反, 它使用包含在 AnimationPlayer 节点中的动画. 通过这种形式, 你可以像往常一样编辑动画(或从3D场景导入动画), 然后使用这个额外节点来控制播放.

在3D场景中经常使用 AnimationTree . 当从3D交换格式导入场景时, 它们通常自带动画(要么是多个, 要么是在导入时从一个大的动画中拆分出来). 最后, 导入的Godot场景在 AnimationPlayer 节点中包含动画.

很少在Godot中直接使用导入的场景(它们要么实例化, 要么来自继承), 你可以将 AnimationTree 节点放置在包含导入的新场景中. 然后, 将 AnimationTree 节点指向导入场景内创建的 AnimationPlayer 节点.

这是在 第三人称射击游戏演示, 中的设置, 参考下图:

../../_images/animtree1.png

为玩家创建了一个以 KinematicBody 为根节点的新场景,在这个场景中,已实例化原来的 .dae (Collada)文件,并创建 AnimationTree 节点。

创建树

可以在 AnimationTree 中使用三种主要节点类型:

  1. 动画节点,从链接的 AnimationTree 中引用动画。

  2. 动画根节点, 用于混合子节点.

  3. 动画混合节点,在 AnimationNodeBlendTree 中使用,通过多个输入端口进行单图混合。

AnimationTree 中设置根节点, 如下几种类型可供选择:

../../_images/animtree2.png
  • AnimationNodeAnimation:从列表中选择一个动画并播放它. 这是最简单的根节点, 一般不直接用作根节点.

  • AnimationNodeBlendTree:包含许多混合类型的节点,如调配, 混合2, 混合3, 一对一等. 这是最常用的根节点之一.

  • AnimationNodeStateMachine<