UNITY 2D-无法更改孩子的位置

时间:2018-07-16 11:32:48

标签: unity3d position 2d

我创建了一个项目,并在其中放置了一个角色,一个忍者。我画了他身体的每个部分,并将它们放到一个有组织的gameObject中。它是这样组织的。 Ninja Organization

注意:Left_Arm GameObject有一个父对象,因此可以像真正的手臂一样通过肩膀旋转

现在问题来了。我已经搜索了好几个小时,却没有找到解决方案,这些解决方案是如此简单明了。在脚本中,我尝试将Left_Arm父级移动一点动画。这是脚本:

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

public class NinjaShooting : MonoBehaviour {

    [Header("GameObjects")]
    public Transform leftArm;
    public Transform rightArm;

    [Header("Other")]
    public bool shooting = false;

    // Update is called once per frame
    void Update () {

            Debug.Log(leftArm.localPosition);
            leftArm.localPosition = new Vector3(100, 100, 100);
            Debug.Log(leftArm.localPosition);
            shooting = false;

    }  
}

所有公共变量都已分配,并且一切都正常,控制台中没有错误,但是leftArm.localPosition = new Vector3(100, 100, 100);行似乎对我的角色没有任何作用。

以下是运行控制台后的控制台:Image

控制台似乎还好。起始位置为(-0.3,0.2,0),在leftArm.localPosition = new Vector3(100, 100, 100);之后,该位置应按原样调试为(100,100,100)。但是位置在检查器中或游戏窗口中都不会改变...

此外,启动器位置在每帧都进行调试,但不应进行调试。因此,我认为自己的职位未得到考虑。

我已经做过很多次了,并且一直很努力。

我什至尝试了一个新项目并重新创建了它,然后在那里,它神秘地起作用了。因此,我的组织或某些方面有问题。抱歉,这是一个愚蠢的问题。

提前谢谢

PS:这是编辑器中脚本的图像,以防万一:Image

PS:该脚本很奇怪,因为我简化了它:)。但这也行不通

1 个答案:

答案 0 :(得分:2)

此问题很可能是由于Animator控制器“锁定”了实际上不是其Motion一部分的属性引起的。在这种情况下,它是“锁定” Transform的位置。尝试修改这些属性时,即使它们是由动画控制的,Unity也不报告任何警告或错误。

典型的冒犯者是将Write Defaults的{​​{1}}属性在动画控制器中设置为true。来here查看文档,了解Animation States的用途,它将对您更有意义。对于所有不需要它的动画状态,建议将其更改为false。