【问题标题】:How to check if an object in an empty state?如何检查对象是否处于空状态?
【发布时间】:2023-03-03 00:21:01
【问题描述】:

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

我需要使用 SetActive(false) 禁用对象,这样:

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

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

此代码在对象处于转换状态时有效,但在空状态时无效:

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

【问题讨论】:

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

标签: c# unity3d states animator


【解决方案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");
 }

玩得开心!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多