最近仕事でめっちゃCloth使ったのだが、Clothはスクリプトからcoefficientsを利用することで操れて楽しい。以下、簡単にClothについて箇条書き。
- Clothがついてると拡大縮小が出来ないが、ClothをDestroyすると可能になる
- Cloth、実は実行中でもDestroyとAddComponetが可能だったりする
- パラメータをどこかに保存しておけば布の状態を復元できる
- Clothの制約、coefficientsはコードから変更できる
- 通常GUIから変更すると書いてあるが実際はコードから変更可能
- 普通に左上が原点のマトリクスだった(下にPlaneのcofficientsを変更するコードを貼っておく)
- これにより動的に布の動き方を制御することが可能
- 固定点を上部にした状態と、下部にした状態を使い分けたり、布に片方がだけはためくなどの状態を作り出せる
const int meshWidth = 11; const int meshHeight = 11; const int meshNum = meshWidth * meshHeight; ClothSkinningCoefficient[] frontSkin = new ClothSkinningCoefficient[meshNum]; ClothSkinningCoefficient[] backSkin = new ClothSkinningCoefficient[meshNum]; void Start(){ for (int i = 0; i < meshNum; i++) { frontSkin [i].maxDistance = float.MaxValue; frontSkin [i].collisionSphereDistance = float.MaxValue; backSkin [i].maxDistance = float.MaxValue; backSkin [i].collisionSphereDistance = float.MaxValue; } for (int i = 0; i < 11; i++) { frontSkin [i ].maxDistance = 1.5f; frontSkin [i + 11*10].maxDistance = 0; backSkin [i + 110].maxDistance = 1.5f; backSkin [i].maxDistance = 0; } } public void ChangeFront(){ GetComponent<Cloth> ().coefficients = frontSkin; }