【UE5】Skeletal MeshにSocketを追加してアイテムを持たせるとアイテムのサイズがおかしくなる場合
日本庭園運営シミュレーションゲーム制作中です。
売店はこの前作ったのですが、せっかくだからちゃんと食べ物を持たせてあげたいと思って実装したのですが、なんかすっごいでっかくなっちゃうのです。想定の15倍くらい大きい。
備忘録として、以下がチェック項目になります。
チェックリスト
私がもともとやっちゃっていたことは以下です。
- SkeletalMeshの
Import Uniform Scaleをいじくっている。0.4にしています。 - メッシュやアーマチュアはBlenderで作っていますが、Apply Scaleはしてなかった。
1. Animation Sequenceのスケール
実はこっちにもImport Uniform Scaleがあるじゃないですか。
SkeletalMeshと同じにしておくことが望ましそうです。
0.4にする。
全部辻褄あってるはずなのに、まだおかしくなります。
私みたいにモデリングの時点からScaleがガチャガチャだとエンジンの内部計算でどうしてもこうなっちゃうみたいです。
2. Blueprintの設定を変える
ActorをSocketに持たせるためのノード[Attach Actor To Component]のインプットピン[Scale Rule]をKeep Worldに変えます。
これでアイテムActor自体のScaleで表示されます。
解決しました。よかった。
Socketの設定手順
忘れそうなのでメモしておく。
1. Skeletal Mesh
Skeletal Meshを開いて、スケルトンツリーを開く。持たせたいパーツ(例:右手)を選択して右クリック → ソケットを追加 を選択。名前を Hand_R_Socket に変えておきました
2. アイテム
アイテムはBlueprint Class Actorで作っておきます。
名前を BP_Food_Beer とかにします。
BP_Food_Beer を開きStatic Mesh Componentを追加して、ビールのStatic Mesh SM_Beer を選択しておきます。
3. Blueprint
私の場合はCharacterのBlueprintで色々やってるので、Characterを開きます。
- [Spawn Actor of Class]ノードを配置して[class]は
BP_Food_Beerを選択。[Spawn Transform]は[Make Transform]を繋いでおけばOK。 - [Attach Actor To Component]のインプットピン
- [Scale Rule]を
Keep Worldに変えます。 - [Target]は[Spawn Actor of Class]のoutput pin[Return Value]
- [Parent]はCharacterのMesh (Static Mesh Component)です。
- [Socket Name]は手順1で命名したソケット名です。そうです、いろんなキャラクターがいるならば名前は共通にしておく必要がありますので、あえて
Hand_R_Socketに変更しています。
- [Scale Rule]を
