我的动画没有在应该播放的时候播放
Posted
技术标签:
【中文标题】我的动画没有在应该播放的时候播放【英文标题】:My animations aren't playing when they should be 【发布时间】:2022-01-20 19:29:48 【问题描述】:所以基本上,我正在使用 c# 统一创建一个流浪的 ai 角色,并且流浪一切正常,但是当某些动画应该播放时,它们却没有。我将包括我用来实现这一点的代码。我还在模型上使用了动画组件,并且动画都正确命名并与动画师名称中的动画对齐,并且动画来自 mixamo。非常感谢任何帮助,因为我完全陷入困境!
void Update()
if (isWandering == false)
StartCoroutine(Wander());
if (isRotatingRight == true)
gameObject.GetComponent<Animator>().Play("idle");
transform.Rotate(transform.up * Time.deltaTime * rotSpeed);
if (isRotatingLeft == true)
gameObject.GetComponent<Animator>().Play("idle");
transform.Rotate(transform.up * Time.deltaTime * -rotSpeed);
if (isWalking == true)
gameObject.GetComponent<Animator>().Play("waalk");
transform.position += transform.forward * moveSpeed * Time.deltaTime;
【问题讨论】:
用else if代替ifs不是更好吗?此外,除了这 4 种情况之外,可能还有其他情况可能会影响动画。 看起来动画可以在每一帧开始 【参考方案1】:真的可以考虑使用Animator参数和转场,以后会省很多麻烦。
无论如何,关于这个问题:您的代码在Update
,这意味着它运行每一帧。
这意味着您告诉 Animator 播放具有该名称的状态的每一帧,因此每一帧它都会重新启动该状态的动画。结果将是您的对象将卡在任何动画的第一帧上。
当所需条件发生变化时,您应该只调用一次Play
。
顺便说一下,这是使用 Animator 参数更方便的一个示例,因为通过转换,您正在查询将 animator 从一种状态转移到另一种状态的特定条件,因此您会得到这个“只运行一次”免费的行为。
【讨论】:
感谢您的回复!这个脚本来自一个教程,cmets 中的每个人似乎都说它运行良好,视频也运行良好,但这可能只是一些误导。非常感谢,我会尝试使用参数并让您知道! 等等其实我才意识到,另一件事是当我在inspector中预览动画时,没有动画,只是角色t-pose。我已经尝试从 mixamo 重新下载动画,但仍然没有成功。【参考方案2】:抱歉,我找到答案了
【讨论】:
太棒了!但是别喊了:) 对不起,我只是想让人们早点看到它,而不是花时间写一个已经解决的问题的答案。我仍然是堆栈溢出的新手,我很少使用它:) 谢谢以上是关于我的动画没有在应该播放的时候播放的主要内容,如果未能解决你的问题,请参考以下文章