実行時のスケール変更

概要


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

制限事項


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

またv2.8.0よりマイナススケールに対応しています。
スケールをマイナスにすることでキャラクター全体を反転させることが可能です。
これは主に2Dゲームなどに役立ちます。
ただし、マイナススケールに設定できるのはXYZの1つの軸のみです

基準スケール


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

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

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

スケール変更方法


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

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

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

ただしこの制限は事前構築を利用することで回避できます。
事前構築については事前構築の利用を参照してください。

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

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

ただしこの制限は事前構築を利用することで回避できます。
事前構築については事前構築の利用を参照してください。