妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

スタティックメッシュを縮小すると物理の動きがおかしい問題

f:id:una_unagi:20170926001049p:plain

「そういえば今回の妹の制作についての問題点とかは」

妹「短時間で作るというのがあったから、そんなに難しいことはしてないけど、でも一箇所ヘンなことになったところがある。物が落ちてきたり跳ね返ったりするのを物理で設定したんだけど、これを普通にやると動きがおかしかったから、ルートに空のSceneComponentを置いて、その中にスタティックメッシュを置いてる」

「たしかに。ルートの場所はスポーンした場所のままで、スタティックメッシュのコンポーネントだけおっこちてるね」

妹「あー、やっぱりそうなってるんだ。そうじゃないかとは思うんだけど、でもなんかヘンだったんだよ」

www.youtube.com

妹「左がルートにScene置いた場合で、右はルートにスタティックメッシュ置いた場合。普通に落として、皿の外に接触したら消えるってルールなんだけど、なんか右の方がこう、キモイ動きをするんだよ。スルッと抜け出して落っこちたり」

「たしかに違うね」

妹「これスタティックメッシュが大きすぎるから、少し縮小して表示してるんだけど、そうするとなんか物理の動作が変わっちゃうみたい。他のとこはいじってないんだけど」

「大きさはどうやって設定してるの?」

妹「左はアクターの設定でコンポーネントを小さくしてる。右はコンストラクションスクリプトでやってる。小さく設定してもスポーンする時に無視されちゃうから」

「ルートコンポーネントだからそうなるよね」

妹「物理さえちゃんと動いてくれれば問題ないんだけど。大きさを変えなければ問題ないみたいだけど、サンプルデータの流用をするには大きさ変えないとどうしようもないし」

f:id:una_unagi:20170926002642p:plain

「重量の設定が自動になってて、普通だとメッシュの大きさに合わせて調節されるけど、ルートに置いてる方は縮小による重量低下が反映されてない気がする。ただここを手動で設定しても結果が同じだから、今回の原因ではなさそう」

f:id:una_unagi:20170926002807p:plain

「動作を見た感じ当たり判定が少しおかしいようにも見えるけど、コリジョンを可視化した感じは普通に見える」

妹「不思議」

「色々試して見た結果SpawnActorノードの時点で、Scaleを変えておくと物理の動きもちゃんとなるみたい。コンストラクションとか、BeginPlayとかだと駄目っぽい」

妹「うーん、それだとアクターごとに寸法が違うから、いちいち設定するのがめんどくさい……」

「大きさとクラス名が対になった配列を作るという手もあるけど」

妹「それをやるぐらいだったらスタティックメッシュ自体を小さくするかなあ。画面上の物体をスタティックメッシュ化するコマンドがあったから、あれを使えばUE4の中で縮小できそうな気がしている。縮小しなければ問題は起きないわけだし」

コンポーネントだけ転がっていっても動作に問題はないの?」

妹「コンポーネントの衝突判定を使ってるからそこは正常に動いてるし、ワールド座標の場所も調べられるし、特に問題はないんだけど、ただなんとなくヘンだなあと思っている」