2
UnityにSprites And Bonesの2Dキャラクタを装備しています。逆キネマティクスを使用してアニメーションします。Unityで逆キネマティクスを使用して2D文字を反転させます。
しかし、私はX軸を反転したい場合は、私の性格は凶暴:
私はシンプルFlip()
機能含む、「空手」に添付のスクリプトを持っている:
public void Flip(){
facingRight = !facingRight;
Vector3 karatekaScale = transform.localScale;
karatekaScale.x *= -1;
transform.localScale = karatekaScale;
}
を
- 「空手は」ただの骨、スプライトのためのコンテナであり、IKは
- 「スケルトン」続きをターゲットにスプライトとボーンズのスケルトンスクリプトを使用しています
- 「右足の骨」「右下の脚の骨」などに骨とIKスクリプトがあります
- 「右脚」「右下脚」などはスプライトです
- 「IKは、」すべてのIKは、私がUnite 2014 - 2D Best Practices In Unityから、他のIKスクリプト、シンプルなCCDと同様な効果を持っているので、私は愚かな何かを行うことが
を対象に入っています。
文字を正しく反転させるにはどうすればよいですか? (マーク用)
EDIT:
私はそれがこれを使用して動作するようになった:
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);
}
}
Sprite RendererのflipX/flipYを使用する代わりに、これをコーディングする理由がありますか? https://docs.unity3d.com/ScriptReference/SpriteRenderer.htmlこれを行う場合、同じことが起こりますか? IKとポールの目標を(IKと骨ごとに)再確認しましたか? –
私は理解できません:私は "karateka" 'GameObject'に' SpriteRenderer'コンポーネントを持っていません。私は3つの 'SpriteRenderer'を各肢に(合計で12点)+胴体と頭部にもう少し追加しました。たとえば、「右脚」、「右下肢」、「右足」にはそれぞれ独自の「SpriteRenderer」があります。私が1つひっくり返すと、それはローカルでのみ反転されます。私はelmpty Sprite Rendererを上の "karateka"オブジェクトに追加しようとしましたが、運がありません。私は 'GetComponent().flipX = true;'も試みました。私はすべてのオブジェクトをもう一度チェックしますが、一方向に作業しているので、両方で動作するはずです。 –
Cyrille
あなたはすべてを反転させたり、骨を正しくリセットしたりしていないようです。アニメーションは私の目では速すぎますが、ボーンの一部が固まって同じ方向を向いているようです(スプライトの原点は0ですか?)これをコードから行うと、ツリー全体のすべてのデータをDebug.Logでダンプして、「スタック」が正しい位置にあるかどうかを確認することもできます。何もなければ、それも情報です –