我创建了一个项目,并在其中放置了一个角色,一个忍者。我画了他身体的每个部分,并将它们放到一个有组织的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:该脚本很奇怪,因为我简化了它:)。但这也行不通
答案 0 :(得分:2)
此问题很可能是由于Animator
控制器“锁定”了实际上不是其Motion
一部分的属性引起的。在这种情况下,它是“锁定” Transform
的位置。尝试修改这些属性时,即使它们是由动画控制的,Unity也不报告任何警告或错误。
典型的冒犯者是将Write Defaults
的{{1}}属性在动画控制器中设置为true。来here查看文档,了解Animation States
的用途,它将对您更有意义。对于所有不需要它的动画状态,建议将其更改为false。