1

如何检查带有动画师的对象当前是否处于空状态?

我需要使用 SetActive(false) 禁用该对象,以便:

  • 如果对象处于状态之间的转换 - 完成转换然后禁用它。

  • 如果对象处于默认空状态 - 立即禁用它。

如果对象处于转换状态,则此代码有效,但如果它处于空状态则无效:

MyObject.GetComponent<Animator>().IsInTransition(0)
4

1 回答 1

1

好的,这就是我的做法。

我假设您知道要禁用对象的“默认空状态”的名称。

将具有“默认空状态”的静态 int 变量声明为要像这样散列的字符串:

 static int VAR-NAME = Animator.StringToHash("Base.NAMEOFSTATE");

这是假设您的基础层称为“基础”。

然后在 Update() 中,将当前状态放入一个变量中,如下所示:

currentState = anim.GetCurrentAnimatorStateInfo(0);

然后使用 If 语句检查您的“默认空状态”是否等于当前状态,如下所示:

if (currentState.nameHash == VAR-NAME){
      Debug.Log("Do Stuff Here");
 }

玩得开心编码!

于 2017-07-08T13:05:11.923 回答