Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Animation 如何使用animator在unity中每次在某个事件上播放一次动画?_Animation_Unity3d - Fatal编程技术网

Animation 如何使用animator在unity中每次在某个事件上播放一次动画?

Animation 如何使用animator在unity中每次在某个事件上播放一次动画?,animation,unity3d,Animation,Unity3d,我知道animator.Play(“anim”)将播放动画,具体取决于动画剪辑是否循环、一次、默认值等。我希望每次调用animator.Play(“anim”)时都播放动画或按下任何按钮,它应该播放动画一次,如果取消选中动画剪辑中的循环时间选项,它应该停止播放,但我的问题是,如果我再次调用animator.play(“动画”)动画不会播放;此外,我不想使用任何参数来触发动画,因为这将是一个简单的动画播放大量的工作。示例:-为了获得更多解释,我创建了一个动画,并将下面的脚本附加到动画对象,并在动画

我知道
animator.Play(“anim”)
将播放动画,具体取决于动画剪辑是否循环、一次、默认值等。我希望每次调用
animator.Play(“anim”)时都播放动画
或按下任何按钮,它应该播放动画一次,如果取消选中动画剪辑中的循环时间选项,它应该停止播放,但我的问题是,如果我再次调用
animator.play(“动画”)
动画不会播放;此外,我不想使用任何参数来触发动画,因为这将是一个简单的动画播放大量的工作。示例:-为了获得更多解释,我创建了一个动画,并将下面的脚本附加到动画对象,并在动画剪辑中进行了以下调整

void更新()
{
if(Input.GetButtonDown(“跳转”))
{
GetComponent().Play(“新动画”);
打印(“应该播放”);
}
}

当我按空格(“跳跃”)时,动画仅播放一次,如果再次按空格,则不会播放。我不知道该怎么做,可能我遗漏了什么。

使用下面的代码播放动画并立即重置动画状态:

    GetComponent<Animator>().Play("New Animation",  -1, 0f);

GetComponent

我猜动画师被你的新动画状态卡住了。你只有箭头指向它,这意味着它只能到达那里一次,然后它就卡住了。我不完全确定这是如何工作的,但尝试将箭头从新状态设置为其他状态,以便它可以循环。我可能是错的。是的,你是对的@Fredrik,“新动画”永远不会进入其开始状态,但unity文档说,如果将“包裹模式”设置为“一次”,那么当时间到达动画剪辑的结尾时,剪辑将自动停止播放,时间将重置为剪辑的开头。嗯,对。剪辑可能会重置,但动画师会被困在该状态,因为它是一条死胡同?所以,当你再次尝试玩状态游戏时,它不能,因为没有路径去那里?(再说一次,我只是在猜测,我从来没有尝试过这样的事情)你成功了吗?问题是什么?不,我没有得到任何关于这一点的信息,所以我做了动画的事情,将动画剪辑标记为遗留(不是使用动画师,而是使用动画)。
    GetComponent<Animator>().Play("New Animation",  -1, 0f);