我正在创建一款 2D 格斗游戏,玩家可以从许多战士中进行选择。战士有不同的攻击和不同的动画。
每次攻击的数据(伤害、碰撞箱、施法时间、动画等)都存储在可编写脚本的对象中,然后由玩家脚本触发。到目前为止,效果很好,但我不知道如何从代码中播放动画而不需要将其放在动画制作器中。
我已经尝试了在这里找到的几种解决方案,但它们似乎最终不得不退回到将动画放入动画师中。
但我无法找到如何从代码中播放动画而不需要将其放在动画制作器中。
Animator
-组件来运行动画。
RuntimeAnimationController
来保存 AnimatorController
对象并将其分配给您的 Animator
(在代码中)。
您不一定需要
Animator
组件,如此答案中所述。
Animation
组件。它被标记为 legacy 但仍然非常强大,特别是当您不需要配置整个状态机但只想简单地播放单个 AnimationClip
时。可能是这仍然进入较新的 Unity 版本的原因:
public AnimationClip clip;
private void Awake()
{
var animation = GetComponent<Animation>();
animation.clip = clip;
animation.Play();
}
Animation.Play
如果是逐帧精灵动画,您可以通过按时间、帧和帧率方程更新当前帧来实现自定义动画系统 当前帧 = 经过的时间 × 帧率