首页 > 解决方案 > 当启用对象中的所有动画师(包括子动画师)时,它会改变对象的位置,将其放得更高我该如何避免它?

问题描述

此脚本附加到对象:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AnimFlyertransportationController : MonoBehaviour
{
    public GameObject JetFlame;
    public bool turnOffOn = false;

    // Start is called before the first frame update
    void Start()
    {
        TurnAllAnimtorsOff(transform, turnOffOn);

        if (turnOffOn)
        {
            JetFlame.SetActive(true);
        }
        else
        {
            JetFlame.SetActive(false);
        }
    }

private void TurnAllAnimtorsOff(Transform root, bool onOff)
    {
        Animator[] animators = root.GetComponentsInChildren<Animator>(true);

        foreach (Animator a in animators)
        {
            if (onOff)
            {
                a.enabled = true;
            }
            else
            {
                a.enabled = false;
            }
        }
    }

    private void OnValidate()
    {
        TurnAllAnimtorsOff(transform, turnOffOn);

        if (JetFlame) JetFlame.SetActive(turnOffOn);
    }
}

当游戏开始时,所有动画师都被禁用并且物体在地面上:

在地上

但是当启用 true 所有动画师时,对象会改变地面上方的位置:

Animator/s 启用 true 并且对象现在在地面之上

这是对象动画师动画选项卡的空闲动画设置的屏幕截图:

动画选项卡的空闲动画设置

我希望当我打开并启用真正的所有动画师时,该对象将留在地面上。

标签: c#unity3danimation

解决方案


推荐阅读