実行時のスケール変更

概要


MagicaCloth2は実行中のスケール変更をサポートしています。
しかしスケール変更には幾つかの制限があります。
ここではその制限事項と実行中のスケール変更方法について解説します。

制限事項


現在サポートされているのは均等スケーリングのみです。
つまりXYZ軸を均等に2倍3倍もしくは0.5倍などにする全体のスケーリングです。
XYZ軸をバラバラにスケールすることはできません。

ただ、将来的にはXYZ軸のフリップスケールに対応する予定です。
例えばX軸をマイナススケールにすることでX軸を反転できる機能です。
これは2Dゲームなどでキャラクターを反転させる場合に便利です。

基準スケール


実行時にクロスコンポーネントの初期化が行われた時点のスケール値を基準スケールと呼びます。
MagicaClothのスケール変更は少し特殊であり、実行時にどのようなスケール変更を行っても基準スケールと揺れ方が変わらないようになっています。

例えば次の3つのキャラクターは中央が基準スケールで左が1.5倍、右が0.7倍にスケーリングしたものです。

大きさが変化しても揺れ方がまったく同じであることがわかると思います。
このように初期化時の基準スケールはとても重要です。

スケール変更方法


実際にキャラクターのスケール変更を行う場合は幾つか注意事項があります。

初期化前にスケール変更はできない

実行時のスケール変更はクロスコンポーネントの初期化後に行う必要があります。
初期化前にスケール変更を行うと意図しない動作になります。
クロスコンポーネントの初期化はAwake()で実行されます。
その為、もし同じAwake()でスケール変更を行いたい場合は手動でクロスコンポーネントの初期化を呼び出しておく必要がります。
これにはInitialize()を利用してください。

シーンに予め配置する場合の注意

例えばクロスコンポーネントを設定したキャラクターのプレハブAがあるとします。
このプレハブAをスケール2倍にした状態で最初からシーンに配置した場合はうまく動作しませんので注意してください。
基準スケールは初期化時に決定されるため、このキャラクターはスケール2倍の状態が基準スケールとして処理されてしまうためです。

このようなケースではスケール変更をしない状態でシーンに配置し、スクリプトなどでコンポーネントの初期化後にスケールを変更する必要があります。