Unity:尝试加载并运行fbx动画



我正试图从fbx文件加载一个动画,并让它在GameObject:上播放

TestObject.AddComponent<Animation>();
animation_handler = TestObject.GetComponent<Animation>();
walking_anim = Resources.Load("fbx_anims/walking_anim_test", typeof(AnimationClip)) as AnimationClip;
if(walking_anim == null)
{
Debug.Log("walking anim not found");
}
walking_anim.legacy = true;
animation_handler.AddClip(walking_anim, "walking");
animation_handler.wrapMode = WrapMode.Loop;

在游戏循环中,我尝试使用这个:

if (Input.GetKeyDown(KeyCode.W))
{
if (!(animation_handler.IsPlaying("walking")))
{
animation_handler.clip = walking_anim;
animation_handler.Play("walking");
}
}

它没有给出任何错误,但也不起作用。我缺了什么吗?

编辑:为了澄清:按下"W"后,模型将保持默认的T形姿势。在不同的点插入Debug.log之后,我可以确认Play函数只被调用一次,之后IsPlaying总是返回true。然而;播放";动画不会导致模型中的视觉更改(是的,骨骼名称相同(。

您不想使用Animation组件,它是一个旧的遗留组件,已被改进的Animator组件所取代。互联网上有很多关于如何使用它的好帖子,无需在这里重复。重要步骤是:

  1. 将"Animator"(而非"Animation"(组件添加到模型中
  2. 创建一个";动画师控制器";在你的项目中添加剪辑(比如"walking_anim"(。在这里,你可以有很多不同的剪辑,并告诉Unity如何使用不同的参数在它们之间进行插值
  3. 将";动画师控制器";到您的";动画师";组件
  4. 添加一个";化身";(通常在导入模型时创建(
  5. 通过代码更改"动画师控制器"的参数,告诉它要播放哪些动画片段

它看起来可能有很多步,但并不那么难,你会很快在屏幕上看到一个行走、奔跑、跳跃的生物。祝你好运

最新更新