Unity C#动画仅播放第一帧

时间:2019-12-09 20:27:18

标签: c# unity3d animation

我正在尝试使人物在按R按钮时播放特定的动画。我希望他播放整个动画,然后在运行一个周期后停止播放。

现在的问题是,当我按“ R”时,动画只播放一帧,而根本没有动画播放。

我从下面的这一句话开始。

void Update ()
{
 if (Input.GetKeyDown(KeyCode.R)) 
 {
   anim.Play("Ready");
 }
}

然后我读到,如果布尔值为true,则最好创建一个bool->播放Animation。

public bool ready;

void Update ()
{
  if (Input.GetKeyDown(KeyCode.R))
  {
     ready = !ready; 
  }
  if (ready == true)
  {
     anim.Play("Ready");
  }
}

当布尔准备就绪为true时,动画播放一帧,然后角色变为静态。如果布尔值再次错误,角色将返回其空闲动画。

我最近进行此工作的尝试是通过构建如下代码:

if (Input.GetKeyDown(KeyCode.R))
{
     ready = !ready;

     if(ready == true)
     {
         anim.Play("Ready");
     }            
}

但是,这只会导致动画播放很少的帧,直到返回到空闲动画为止。即使一切准备就绪。

我不是在使用“ Animator组件”,而是在使用“ Animation组件”。这是它的设置:Animation Component

是否是导致问题的无效Update()? 另外,是否有办法确保动画只播放一个周期然后停止?

1 个答案:

答案 0 :(得分:0)

您的方法看起来有效。是否有可能不是您导入的动画? 您应该按照建议使用Animator:

  • 将剪辑拖放到“ Animator”窗口中,
  • 右键单击默认状态>“进行过渡”,在下一个剪辑上释放
  • 创建类型为bool的参数“ ready”,
  • 在从空闲状态到下一个状态的过渡中分配此参数(选择箭头,然后在Inspector窗口的组件底部单击“ +”按钮,选择您的参数),
  • 在脚本中,您只需调用: myAnimator.SetBool("ready", true);

使用Animator有很多好处: 使用“类人动物”装备(在模型导入设置中)处理许多动画剪辑,自动过渡,预览以及更多功能...