动画脚本
中级 程序员
动画通过脚本进行控制。
你可以将 AnimationComponent 添加到实体上,并在 Game Studio 中设置其参数。AnimationComponent 类主要设计为在脚本中使用。
比较有用的属性包括:
| 属性 | 说明 |
|---|---|
| Animations | 获取与此 AnimationComponent 关联的动画剪辑 |
| BlendTreeBuilder | 获取或设置动画混合树构建器。请注意,你可以创建自定义混合树;更多信息请参见自定义混合树 |
| PlayingAnimations | 获取活动动画列表。使用它可以自定义启动动画。正在播放的动画列表由动画处理器自动更新,因此在更改该列表或持有正在播放动画的引用时请小心 |
更多信息请参见设置动画。
使用内置的 AnimationStart 脚本
Stride 附带一个内置的 AnimationStart 脚本。你可以将此脚本作为模板来编写自己的动画脚本。
要使用 AnimationStart 脚本:
在资产视图(默认位于底部窗格),点击添加资产。
选择 Add asset > Scripts > Animation start。

为脚本指定名称,点击创建脚本。

3a. 如果 Game Studio 询问是否保存脚本,请点击保存脚本。
3b. 如果 Game Studio 询问是否重新加载程序集,请点击重新加载程序集。
根据需要编辑脚本并保存。
动画脚本示例
此示例脚本根据角色的行走速度为其分配简单的动画。
using Stride.Engine;
namespace AdditiveAnimation
{
public class AnimationClipExample : SyncScript
{
public float MovementSpeed { get; set; } = 0f;
private float walkingSpeedLimit = 1.0f;
// 假定脚本附加在一个带有动画组件的实体上
private AnimationComponent animationComponent;
public override void Start()
{
// 缓存稍后需要的变量
animationComponent = Entity.Get<AnimationComponent>();
animationComponent.Play("Idle");
}
protected void PlayAnimation(string name)
{
if (!animationComponent.IsPlaying(name))
animationComponent.Play(name);
}
public override void Update()
{
if (MovementSpeed <= 0)
{
PlayAnimation("Idle");
}
else if (MovementSpeed <= walkingSpeedLimit)
{
PlayAnimation("Walk");
}
else
{
PlayAnimation("Run");
}
}
}
}
覆盖动画混合树
你也可以覆盖动画混合树,在脚本中完成所有的动画混合。Stride 附带的第一人称射击、第三人称平台游戏和俯视角 RPG 模板使用了一些高级技术,就是这方面的示例。更多信息请参见自定义混合树。
