C# 旋转Y改变X值
我正在LateUpdate中钳制动画:C# 旋转Y改变X值,c#,unity3d,C#,Unity3d,我正在LateUpdate中钳制动画: float fMinRotationLR = 320f; float fOldX = Chest.localEulerAngles.x; if (Chest.localRotation.eulerAngles.y < fMinRotationLR) { Chest.Rotate(new Vector3(Chest.localRotation.x, fMinRotationLR, Chest.loc
float fMinRotationLR = 320f;
float fOldX = Chest.localEulerAngles.x;
if (Chest.localRotation.eulerAngles.y < fMinRotationLR)
{
Chest.Rotate(new Vector3(Chest.localRotation.x, fMinRotationLR, Chest.localRotation.z));
}
float fNewX = Chest.localEulerAngles.x;
但这也给出了同样的结果
谢谢你的帮助。我知道了!!!:-)
transform.Rotate(x,y,z)
或接受Vector3
的等效工具将围绕x轴旋转x度,围绕y轴旋转y度,等等。因此,您的原始代码:
Chest.Rotate(new Vector3(Chest.localRotation.x, fMinRotationLR, Chest.localRotation.z));
将围绕x轴旋转胸部Chest.localRotation.x
度,这刚好足以将其恢复为0
更深入一点,软件惯例指出函数/方法通常意味着“做某事的动作”。名为SetRotation
的方法通常等于rotation=
在这种情况下,方法名是Rotate
,因此根据相同的约定,我们可以推断它的意思是“旋转变换”。Unity的API很好地遵守了这个约定
您的第二次尝试:
Chest.localEulerAngles = new Vector3(Chest.localRotation.x, fMinRotationLR, Chest.localRotation.z);
也不起作用,因为您正在将Chest.localRotation的值(即a)指定给Chest.LocalEuleRanges(即矢量3)。四元数是矢量4,是表示三维旋转状态的另一种方法(更可靠)。它与EulerAngles不同,因此这些值的含义不同
你似乎自己解决了这个问题,我只是解释为什么会发生
Chest.localEulerAngles = new Vector3(Chest.localRotation.eulerAngles.x, fMinRotationLR, Chest.localRotation.eulerAngles.z);
你应该解释你所做的改变,而不是说“我明白了”,这样其他人就可以理解你在做什么!为了完整起见,你能把我的解决方案包括在你的答案中吗?我想其他读者可能会搞不清楚什么是真正有效的。再次感谢你!
Chest.localEulerAngles = new Vector3(Chest.localRotation.x, fMinRotationLR, Chest.localRotation.z);
Chest.localEulerAngles = new Vector3(Chest.localRotation.eulerAngles.x, fMinRotationLR, Chest.localRotation.eulerAngles.z);