Clothを使って揺れる布の表現をつくる

今回はクロスを使って布のような動きを持つオブジェクトをつくってみましょう。
ワールドに設置するとカーテンのように用いたり、旗のように使うこともできます。

クロスを使ってみよう

クロス(Cloth)を用いると、オブジェクトを布のように表現することができます。
早速つくってみましょう。

  • まず Unity 上部のメニューもしくは Hierarchy を右クリックして GameObject > 3D Objects > Plane から 平面を作成します。
  • Planeはデフォルトでは片面しか描画されないため、作成した Plane のマテリアルを下記の Unity パッケージ内にある「DoubleSide」マテリアルへ変更します(「DoubleSide」は下記からダウンロードしてください)。
  • 作成した Plane を選択し、Add Component ボタンから「 Physics > Cloth」を追加します。Cloth を追加すると自動的に Skined Mesh Renderer が追加されます。

Clothを使いすぎると動作が重くなるので、使い所を見極めて使用するのがベストです。

クロスを追加できたら、どのような動きをするのか確かめてみましょう。Unity 上部にある再生ボタン「▶」を押して Play してください。
初期値のままだとそのまま落下していってしまいますね。

次はクロスが落下しないように固定してみましょう。

  • Inspector ウィンドウの Cloth にある服にピン留めのアイコンを押してください。Scene ビューでは Cloth コンポーネントを付けたオブジェクトの頂点が黒く表示されます。
  • まずは Scene ビューに表示されている「Cloth Constraints」ウィンドウの Paint を選択してください。頂点を選択すると色が変わって「Max Distance」に設定された数値以下の範囲しか動かなくなります。
  • 今回は正方形の上の辺をすべて選択します。

固定する頂点を選択したら、どのような動きをするのか確かめてみましょう。Unity 上部にある再生ボタン「▶」を押して Play してください。
固く壁のようであった平面が、まるでカーテンのような動きをしていますね。

クロスは平面のオブジェクトだけでなくいろいろなオブジェクトにも適用できます。例えば球体にクロスコンポーネントをつけると、空気の抜けたボールのようになります。様々なオブジェクトで試してみましょう!

クロスに当たり判定をつけよう

次はクロスに触れられるようにしてみましょう。今の段階だとゆらゆら揺れているクロスにぶつかってもさらに揺らすことはできずに通り抜けてしまいます。

Cloth に干渉できるものは、設定した Capsule Collider か Sphere Collider をコンポーネントに持つオブジェクトだけです。Cloth に干渉できるオブジェクトを追加したい場合は、Colliders の値を増加させ下記の手順でオブジェクトを追加してください。

  • まずクロスに当てるための球体を作成しましょう。 Unity 上部のメニューもしくは Hierarchy を右クリックして GameObject > 3D Objects > Sphere から球体を作成します。
  • 次はPlane側の設定をしていきます。Cloth コンポーネントの中にあるSphere Colliders の値を「1」に変更します。
    • First の欄に先ほど作成した Sphere をドラッグアンドドロップしましょう。Second に別の Sphere を追加すると First と Second の球体を繋いだ円錐型の Collider として干渉することができます。今回は使用しないため Second は空欄のままでOKです。

Unity 上部にある再生ボタン「▶」を押して Play してください。
再生中に Scene タブを選択し、先ほど作成した Sphere を選択して移動させてみてください。球体がクロスに当たると揺れますね。

  • ひとつ注意点があります。クロスの動きはローカルでの挙動となり、複数人で見る場合見る人によってクロスの状態が異なる場合があります。
    オブジェクトの同期についてはこちらの記事で詳しく解説しています。

揺れにくくしたりランダムな力を加えるなど Cloth には色々な設定があります。
より細かな調節をしたい方は Unity 公式ドキュメントを参照してください。

クロスで旗をつくろう

それではクロスの挙動がわかったところで、旗をつくってみましょう。

  • まず Unity 上部のメニューもしくは Hierarchy を右クリックして GameObject > 3D Objects > Cylinder  から円柱を作成します。ちょうどいい大きさに Scale を調整してください。
  • 持てるようにするため 、Add Component から「Grabbable Item」を追加します。
  • 作成した円柱の子に Cloth を移動させます。固定した Cloth の端を円柱の中に埋めるように配置します。
  • 持てるアイテムのつくり方や Grip の設定方法はこちらの記事を参考にしてください。

これで準備は完了です。アップロードをして動作を確認してみましょう!

記事をシェアしてワールド制作を盛り上げよう!