Unityを使った3Dゲームの作り方(かめくめ)Unityを使った3Dゲームの作り方(かめくめ)ゲーム開発エンジンUnityを使った3Dゲームの制作に参考になる情報を公開しています。0Unityに取り込んだ3DCGモデルは、ジャケットやスカート等の服を着せてモデリングしていると思います。ボーンを設定し、アニメーションを付ければそのボーンの動きによって服も動くようになっています。ゲーム内で着せ替えが出来るような機能を作る場合は、キャラクターモデルに服のモデルをインスタンス化し、切り替えが出来るようにします。Unityでキャラクターの服・防具の着せかえを出来るようにするblenderで作成した服、鎧や足をガードする装備等を作成した後Unityに取り込み、キャラクターが装備を着せかえることが出来るようにします。20:00しかしキャラクターモデルのボーンに服のモデルのプレハブを設定し、キャラクターが動いた場合に服はボーンとともに動きますが、そのボーンの動きとは関係ない部分で重なってしまう事があります。本来であれば服が手や足の動きに合わせて動いてほしい所です。そんな時にClothの機能を使うと、服が設定したコライダの動きに合わせてリアルタイムに形状を変化させる事が出来ます。いやぁこの機能すごいです!スポンサーリンクClothの設定と使い方まずは試しにPlaneを作成し、このPlaneにClothを設定しどのように形状を変化させるか見てみます。Object→Planeを選択します。Triggerにチェックを入れます。Triggerにチェックを入れないとキャラクターがPlaneのコライダと物理的に当たってしまい、布が逆側からしかうごかなくなってしまいます。Component→Physics→Clothを選択し、Clothを取り付けます。RendererのMeshにこのゲームオブジェクト(Plane)のメッシュを指定します。ここで指定したメッシュ形状が設定したコライダと接触した時に、形状を変えます。形状を変えるには変えたい部分のメッシュが他のメッシュと分かれている必要があります。キャラクターの体と服のモデリングは別にして、メッシュを分けておきます。Clothの設定項目Clothの設定項目を見てみます。Stiffnessは布の伸縮率。Stiffnessは布の曲げ剛性。Tethersは布が離れすぎるのを制限するか。Gravityは布に重力を与えるか。Dampingは動きの減衰値。AccelerationはXYZ軸に一定に加える加速度。Accelerationはランダムに加える加速度。Scaleはワールド座標の動きがスケールにどれだけ影響を及ぼすか。Scaleはワールド座標の加速度がスケールにどれだけ影響を及ぼすか。Frictionはコライダと接触した時の摩擦。Scaleは衝突時のパーティクルの増加量?。Collisionは連続の衝突を有効にするかどうか。Frequencyは一秒間ごとのソルバー反復の回数?精度を上げるパラメータみたいです。Thresholdは布が動かなくなる為のしきい値。Collidersは布と接触するSphereColliderを設定となっています。実行しながら値を変えていくといいかもしれません。詳細については参考サイトを見てください。Constraintsを設定します。Constraintsボタンを押してシーンビューを見ます。↑のようにシーンビューに表示されます。Penetrationの見た目を変えます。Selectモードの場合はマウスのドラッグで範囲指定をし、下の項目で全部の値を変更する事が出来ます。Paintモードの場合は個々の頂点を指定し、個別に下の項目で値を変更する事が出来ます。Distanceは元の頂点の位置からどれだけ動くかの最大値を指定します。Distanceを0にします。Penetrationは布がメッシュを突き抜ける深さを指定します。この値を0にすると布は突き抜けず、完全にめくり上がるという事になります。Distanceを0に設定してみます。頂点の選択はSelectモードで行う事にします。Distanceを0に設定します。これでPlaneの上の頂点群は固定されることになります。Penetrationは設定しない事にします。次にClothに設定したメッシュが接触するコライダを設定します。Clothのメッシュは不特定多数のコライダとの接触は出来ず、あらかじめ接触するコライダを指定しておく必要があります。今回はキャラクターに接触判定のコライダを取り付け、Clothのコライダに設定する事にします。Clothが判定出来るのはCapsuleColliderか、SphereColliderを2つ用意し、スタート地点、エンド地点を指定します。キャラクターをRigidbody+CapsuleColliderで動かしているのであれば、このCapsuleColliderをClothに設定すればいいですが、わたくしのキャラクターはCharacterControllerで動かしていますので、新たにCapsuleColliderをキャラクターに取り付けサイズを調整し、CharacterControllerのコライダとサイズを合わせておきます。↑がキャラクターのインスペクタです。Triggerにチェックを入れ物理的には当たらないようにします。↑のようにCharacterControllerのコライダのサイズと同じにしておきます。CollidersのSizeを1にして、キャラクターのCapsuleColliderを設定します。これで設定が出来ました。キャラクターをPlaneに接触させて、確認してみましょう。↑のようにPlaneが布のように少し動いており、キャラクターと接触するとその部分の形状が変わっているのがわかります。Cloth機能すごいですね!この記事ではClothの基本的な使い方をやりましたが、UnityのClothを使って髪、鎧、マントの動きを作成するUnityのClothを使うと、髪、鎧、マント等の動きを作成する事が出来、設定したコライダとの接触で形状を変化させる事も出来ます。00:01では、髪、鎧、マントにClothを設定してみました。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。サイト内検索が出来ますプロフィール管理人のかめくめちゃんです。(-_-)メールはこちらにお願いします(記事への質問はコメント欄にお願いいたします)。kamekumechan@gmail.comいずれはSIRENやバイオハザードみたいなアクションゲームを作りたいと思っています。ゲームシナリオが書けないので面白いゲームはなかなか作れません・・・・。(^_^;)名前の由来はカメが好きだからです。Д`)シクシク...お知らせ2020/01/18個人的にUnity2019.2.18f1をインストールしました。2020/01/01あけましておめでとうございます。(^^)/ユニティちゃんのRPGを作ってみようのPartyStatusスクリプトでpartyMembersのListの型がCharacterStatusとなっていたのでAllyStatusに変更しました。変更したというか、元々AllyStatusに書き換える前のスクリプトを掲載していたので修正しました。ユニティちゃんのRPGを作ってみよう10ーコマンド画面の作成とステータスの表示ーユニティちゃんのRPGでコマンド画面の作成とステータスコマンドを作成し、選択したキャラクターのステータスを表示するようにしていきます。20:00GetPartyStatusメソッドの戻り値もそれに伴って変更しています。2018/08/07コメント欄へのわたくしの返信は停止しております。わたくしに出来る事は既に記事にしてあるので、ブログ右上の検索窓を活用してください。(._.)またブログの最初の方の機能を積み上げていく記事に関しての疑問点は当ブログ記事のスクリプトの説明と寄せられた質問への回答Unityを使った3Dゲームの作り方(かめくめ)の機能積み上げ形式の記事のスクリプトの説明と寄せられた記事の機能についての質問への回答を掲載しています。21:41も参照してみてください。コメントの返信はありませんが、回答は記事に反映されている可能性があります。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。Unityを使った3Dゲームの作り方(かめくめ).。