2017-07-06 64 views
1

如何检查一个带动画的对象是否处于空状态?如何检查一个空状态的对象?

我需要禁用使用SETACTIVE(假)的对象,这样:

  • 如果对象是在状态之间的转换 - 完成过渡,然后将其禁用。

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

此代码的工作,如果对象是处于转型期,但如果是在空不工作状态:

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

测试null,并确保在对象完成每个状态之前不要将对象设置为值。如果您正在运行异步,则将对象置于锁定状态,同时在状态之间转换。 – jdweng

回答

1

确定这里就是我做的。

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

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

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

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

在更新(

的话),把当前状态的变量是这样的:

currentState = anim.GetCurrentAnimatorStateInfo(0); 

,然后使用IF语句来检查,如果你的“默认为空状态”等于这样的当前状态:

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

玩得开心编码!

+1

非常感谢! :) – Rumata