2014年12月7日日曜日

SmoothMovesメモ CrossFade、スプライト反転、mLocalTransform

CrossFade前後でテクスチャーの変更があるような場合、モーフィングのような切り替わり方をしてくれるわけではない。
単純に前後のテクスチャーを描画するフレームの割合が変化していくだけなので、CrossFadeにあまり長い時間を設定すると点滅しているかのような不自然な見え方をする。
また、CrossFadeはレイヤーが同一のもの同士でないと正しく動作しない。


スプライトの反転方法を調べた。
smooth movesのサンプルではchefの顔の左右反転に
boneAnimation.mLocalTransform.localEulerAnglesのyに0か180を代入する方法をとっている。
他の方法には、scale.x = -1 や scale.x *=-1 などが考えられるがサンプルのy軸回転の方法がシンプルで幅広く対応できるだろう。


それでこのmLocalTransformってTransformと何が違うんだ、と思ったので
BoneAnimationがアタッチされているオブジェクトに下記コードのスクリプトをアタッチして確かめた。

〇コード
BoneAnimation bone = this.GetComponent<BoneAnimation>();
Debug.Log("this.transform         : " + this.transform.GetInstanceID());
Debug.Log("bone.transform         : "+bone.transform.GetInstanceID());
Debug.Log("bone.mLocalTransform : " + bone.mLocalTransform.GetInstanceID());

〇結果
結果はどれも同じインスタンスID

mLocalTransformとtransformの違いはわからなかった。
APIドキュメントにおいてもPublic Attributesの1つとして紹介されているだけ。
用意されてる以上何かしら意図があるものだとは思うのだけれど。


0 件のコメント:

コメントを投稿