我在 Unity 中有一个带有Sprites 和 Bones的 2D 角色,我使用反向运动学对其进行动画处理。
但是如果我想翻转 X 轴,我的角色就会发狂:
我有一个附加到“Karateka”的脚本,其中包含一个简单的Flip()
函数:
public void Flip(){
facingRight = !facingRight;
Vector3 karatekaScale = transform.localScale;
karatekaScale.x *= -1;
transform.localScale = karatekaScale;
}
- “Karateka”只是骨骼、精灵和 IK 目标的容器
- “Skeleton”包含 Sprite And Bones 中的 Skeleton 脚本
- “右腿骨”、“右小腿骨”等有骨骼和IK脚本
- “右腿”、“右小腿”等是精灵
- “IK”包含所有 IK 目标
我对Unite 2014 - Unity 中的 2D Best Practices的其他 IK 脚本 Simple CCD 具有相同的效果,所以我可能会做一些愚蠢的事情。
我该怎么做才能正确翻转我的角色?
编辑(马克):
我使用它来工作:
public void Flip(){
facingRight = !facingRight;
/*
Vector3 karatekaScale = transform.localScale;
karatekaScale.x *= -1;
transform.localScale = karatekaScale;
*/
GameObject IK = GameObject.Find ("IK");
GameObject skeleton = GameObject.Find ("Skeleton");
Vector3 ikScale = IK.transform.localScale;
ikScale.x *= -1;
IK.transform.localScale = ikScale;
if (facingRight) {
skeleton.transform.localEulerAngles = new Vector3(skeleton.transform.localEulerAngles.x, 180.0f, skeleton.transform.localEulerAngles.z);
} else {
skeleton.transform.localEulerAngles = new Vector3(skeleton.transform.localEulerAngles.x, 0.0f, skeleton.transform.localEulerAngles.z);
}
}