Unity でSprites And Bonesを使用してリギングされた 2D キャラクターがあり、インバース キネマティクスを使用してアニメーション化しています。
しかし、X 軸を反転させたい場合、私のキャラクターは凶暴になります。
Flip()
シンプルな関数を含む「Karateka」に添付されたスクリプトがあります。
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 - 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);
}
}