スタティックメッシュのコリジョン設定を一括変更する

コリジョンを設定する

USE_COMPLEX_AS_SIMPLEに設定する例。

コンテンツブラウザでアセットを複数選択した状態で以下のスクリプトを実行する。

#
# StaticMeshアセットのCollision ComplexityをUSE_COMPLEX_AS_SIMPLEに設定する
#
import unreal

# アセットブラウザで選択されたスタティックメッシュアセットを取得
assetList = unreal.EditorUtilityLibrary.get_selected_assets()

if len(assetList) > 0:
    for asset in assetList:
        # body_setupを読み込む
        bodySetup = asset.get_editor_property('body_setup')
        # Enum型のCollision Trace Flagをつくる
        collisionTraceFlag = unreal.CollisionTraceFlag.CTF_USE_COMPLEX_AS_SIMPLE
        bodySetup.set_editor_property('collision_trace_flag', collisionTraceFlag)
        asset.set_editor_property('body_setup', bodySetup)

Enum変数から値を取得するときのメモ

enumVar = bodySetup.get_editor_property(‘collision_trace_flag’)でEnumで変数を受け取った時に

enumVar.name
で、CTF_USE_COMPLEX_AS_SIMPLEといった名前が取得できる

enumVar.value
で、3のような値が取得できる

コリジョンプリセットを変更する

Collision PresetsをNoCollisionに変更する例

#
# StaticMeshアセットのコリジョンプリセットをNoCollisionに変更する
#
import unreal

# アセットブラウザで選択されたスタティックメッシュアセットを取得
assetList = unreal.EditorUtilityLibrary.get_selected_assets()

if len(assetList) > 0:
    for asset in assetList:
        # body_setupを読み込む
        bodySetup = asset.get_editor_property('body_setup')
        bodyInstance = bodySetup.get_editor_property('default_instance')

        bodyInstance.set_editor_property('collision_profile_name', 'NoCollision')
        bodySetup.set_editor_property('default_instance', bodyInstance)
タイトルとURLをコピーしました