我在Unity中有一个装有Sprites And Bones的2D角色,我使用反向运动来为它制作动画。
但如果我想翻转X轴,我的角色就会疯狂:
我有一个附加到" Karateka"的脚本,其中包含一个简单的Flip()
函数:
public void Flip(){
facingRight = !facingRight;
Vector3 karatekaScale = transform.localScale;
karatekaScale.x *= -1;
transform.localScale = karatekaScale;
}
我与Unite 2014 - 2D Best Practices In Unity的其他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);
}
}
答案 0 :(得分:2)
好的,正如我们在评论中讨论的那样,只是总结一下:
1)你没有翻转所有东西和/或没有正确地重置骨骼,这就是为什么动画片会崩溃的原因#34;在翻转上
2)可以执行--Select @Sql
。翻转[X / Y]但这应该在精灵的每个元素上完成
3)骨架脚本有一个"编辑模式"复选框。当它被检查并且使用SpriteRenderer
翻转角色时,可以看到除了骨骼之外的所有都被翻转
最后但并非最不重要的是,问题已经通过代码片段进行了更新,提供了代码级解决方案"关于这个问题。
感谢分享所有细节Cyrille以及我很高兴我能提供帮助。
答案 1 :(得分:0)
也可以仅在 Y 轴上将预制件(此处为 Karateka)的根部旋转 180°。
2D 精灵实际上是 2 面 3D 网格,在 Y 轴上将它们旋转 180° 与翻转渲染的作用相同,如果 IK 是对象根的父级,它们将跟随旋转,并且所有动画会起作用。