Unity3d 使用StateMachineBehaviour更改布尔值

Unity3d 使用StateMachineBehaviour更改布尔值,unity3d,animation,boolean,Unity3d,Animation,Boolean,我的角色脚本中有一个bool,我不希望在animator控制器的某些动画状态中处于活动状态。 为此,我知道您必须创建一个带有StateMachineBehaviour的脚本以附加到动画状态,但是如何调用与StateMachineBehaviour位于同一对象中的MonoBehavior脚本上的状态布尔?假设您希望引用的MonoBehavior组件与您分配给StateMachineBehaviour的Animator组件连接到同一游戏对象,您可以使用以下方法获取引用: var component

我的角色脚本中有一个bool,我不希望在animator控制器的某些动画状态中处于活动状态。
为此,我知道您必须创建一个带有StateMachineBehaviour的脚本以附加到动画状态,但是如何调用与StateMachineBehaviour位于同一对象中的MonoBehavior脚本上的状态布尔?

假设您希望引用的MonoBehavior组件与您分配给StateMachineBehaviour的Animator组件连接到同一游戏对象,您可以使用以下方法获取引用:

var component = animator.GetComponent<YourComponent>();
因此,您的代码可能如下所示:

override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
    var component = animator.GetComponent<YourComponent>();
    component.valueToChange = true;

}

谢谢你的回答。但是如果我想禁用移动,该怎么办。。?取消旋转,但是角色的旋转方式与其应该旋转的方式不同,因为“我的运动向量transform.forward”保持活动状态,并且在旋转时,角色将朝该方向移动。如果我禁用它作为旋转,角色将不再移动,因为Controller.Move使用此向量移动。我该如何做才能不干扰角色的根移动…??这似乎与您最初的问题不同