PhysicalMaterialの設定と取得については
を参考にしましたが、
BP_Player のReturn Material on Moveを有効にしなければならないようでしたので受けること自体は解決し、PhysicalMaterialは受けられるようになりましたが、
葉っぱ=Leafと幹=Root で別々のPhysicalMaterialを受けることはできていません。
BP_BigTree というBPの内部のstaticMeshのOverlapEventや、HitEventでもGenerate Overlap Events も Multi Body Overlap も ON ですが
機能しませんでした。
T_Sumisaki
(T_Sumisaki)
November 30, 2022, 12:07pm
2
Materialが分かれていれば、1つのMeshで複数のPhysicalMaterialを扱うことは可能です
まずはMaterialが分かれているか確認してください
そして、Material側のPhysicalMaterialとして設定してください
StaticMeshComponentでOverride設定した場合、PhysicalMaterialは単一のものになります
単一のMaterialでも複数のPhysicalMaterialを扱うことは可能ですが
その場合はMeshごとに Support Physical Material Masks
の設定と、PhysicalMaterialMaskの作成が必要です
ただしメモリコストが増加します
1 Like
返信ありがとうございます。
StaticMeshComponentでOverrideを外して
別々のマテリアルの
別々のMaterialInstance側のPhysicalMaterialに設定している状態です。
がルートは取れますが、リーフは取れません
T_Sumisaki
(T_Sumisaki)
November 30, 2022, 11:56pm
4
設定できているのであれば、あとはCollision状況次第になりますね
Collisionの形状や、Pawnとの当たり方がわかるものを提示してください
ちなみにこちらの検証用のMeshはこういう状態です(UE5.0.3)
CollisionはUseComplexAsSimpleなので、MeshSurfaceと同一です
単一のMeshですが、金属の部分と木の部分はきちんとPhysicalMaterialが別判定になっています
1 Like
ご返信ありがとうございます。
Collisionに絞れてよかったです。
こちらの検証用のMeshはこういう状態です(UE5.0.3)
CollisionはUseComplexAsSimpleで、MeshSurfaceと同一です
単一のMeshですが、水色のA部分と黄色のB部分は
PhysicalMaterialが別判定になっていません。
問題のプロジェクトファイルはこちらです
T_Sumisaki
(T_Sumisaki)
December 1, 2022, 6:17am
6
MaterialでPhysicalMaterialを分ける場合は、ComplexCollisionの利用が必須のようです
Simple as complex
ではSimpleCollisionとして設定されたプリミティブがそのままComplexになってしまうため、Surfaceに適用されたMaterialとの一致が取れず、優先度の高い(MaterialIndexの小さい)ほうが出てしまうのではないでしょうか
CharacterMovementはSweepしていますが、その対象はSimpleCollisionです
なので今回の判定では、SimpleCollsionで検知されたほうがPhycisalMaterialとして入ってきています
ひとまず、CharacterMovementが動かすCollisionによる検知でPhysicalMaterialを出し分けたい場合は、対象のCollisionComplexityは Complex as Simple
にするのが良いでしょう
なお、LineTrace等でComplexを対象にしたときにはComplexCollsionが参照できるので、結果が変わります
1 Like
返信とご回答ありがとうございます。
CollisionComplexityは Use Complex Collision As Simple でさらにかつジャンプしてコリジョンがあたった時に反応するようになりました。
歩いただけではだめでした。
完成したプロジェクトファイルはこちらです。