动画树

Godot AnimationTree(动画树)

在开始之前,必须明确AnimationTree节点不包含它自己的动画。相反,它使用包含在AnimationPlayer节点中的动画。通过这种方式,你可以编辑你的动画(或者从3D场景中导入它们),然后使用这个额外的节点来控制播放。

创建动画树

在这里插入图片描述
Tree Root类型介绍:

  • AnimationNodeAnimation: 从列表中选择一个动画并播放它。这是最简单的根节点,通常不直接用作根。
  • AnimationNodeBlendTree: 包含许多混合类型节点,如mix, blend2, blend3, one shot等。这是最常用的Tree Root之一。
  • AnimationNodeStateMachine: 在图中包含多个根节点作为子节点。 每个节点作为一个状态使用,并提供多种函数以在状态之间切换。
  • AnimationNodeBlendSpace2D: 允许将根节点放置在2D混合空间中。 控制2D中的混合位置以在多个动画之间混合。-
  • AnimationNodeBlendSpace1D: 上述的简化版本 (一维).

AnimationNodeBlendTree

在这里插入图片描述

Animation

在这里插入图片描述
在这里插入图片描述

OneShot

在这里插入图片描述
在这里插入图片描述

TimeScale

在这里插入图片描述
在这里插入图片描述
此图片未能显示实际效果,实际上动画变得更快。

BlendTree

可以说是AnimationNodeBlendTree中的AnimationNodeBlendTree。
在这里插入图片描述

Transition

非常简单的状态机(当您不想处理StateMachine节点时)。 可以将动画连接到输出,并可以指定过渡时间。
在这里插入图片描述

StateMachine

在这里插入图片描述

用代码控制

构建完树并对其进行预览之后,剩下的唯一问题是“如何通过代码控制所有这些?”。

请记住,动画节点只是资源,因此,它们在所有实例之间共享。 在节点中直接设置值将影响使用此AnimationTree的场景的所有实例。 但是,这有一些很酷的用例,例如 您可以复制和粘贴动画树的一部分,或在不同的动画树中重复使用具有复杂布局的节点(例如状态机或混合空间)。

实际的动画数据包含在AnimationTree节点中,并可以通过属性进行访问。 检查AnimationTree节点的“Parameters”部分,以查看可以实时修改的所有参数:
在这里插入图片描述
这很方便,因为它可以从AnimationPlayer甚至AnimationTree本身对它们进行动画处理,从而可以实现非常复杂的动画逻辑。

要从代码中修改这些值,必须获取属性路径。 通过将鼠标悬停在任何参数上,可以轻松完成此操作:
在这里插入图片描述
允许设置或读取它们:

anim_tree.set("parameters/eye_blend/blend_amount", 1.0)
# Simpler alternative form:
anim_tree["parameters/eye_blend/blend_amount"] = 1.0

状态机旅行

Godot的StateMachine实现中的一个不错的功能之一就是旅行的能力。 可以指示该图从当前状态转到另一状态,同时访问所有中间状态。 这是通过A *算法完成的。

要使用旅行功能,您应该首先从AnimationTree节点检索AnimationNodeStateMachinePlayback对象(该对象作为属性导出)。

var state_machine = anim_tree["parameters/StateMachine/playback"]

一旦检索到它,就可以通过调用它提供的众多函数中的一个来使用它:

state_machine.travel("SomeState")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想打工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值