Unreal Engine で レベル を作成していると、スタティックメッシュ に何かをアタッチする必要が生じる場合があります。アウトライナ でスタティックメッシュにオブジェクトを親子付けすることはできますが、メッシュに対して配置したい場所にオブジェクトを正確に配置しなければならず、とても面倒です。ソケット は、スタティックメッシュに配置できるアタッチ ポイントです。設定すると、オブジェクトをソケットに接続することができます。このチュートリアルでは、スタティックメッシュに対してソケットを作成する方法とレベルで使用する方法について説明します。
設定
作業中のプロジェクトがある場合は、それを使用することもできます。ない場合は、Unreal Engine を起動し、[Starter Content (スターターコンテンツ)] を有効にして新規プロジェクトを作成し、開始します。このガイドでは、「First Person (ファースト パーソン)」テンプレートを使用していますが、どのテンプレートを使用していただいても構いません。Unreal Engine での新規プロジェクトの作成については、「新規プロジェクトを作成する」を参照してください。
プロジェクトを開いたら、コンテンツ ブラウザ で 「スターター コンテンツ」 フォルダを探します。次に 「Props」 フォルダに移動し、SM_DoorFrame という名前のスタティックメッシュを探します。
プロジェクトで作業していて、スターター コンテンツを有効にしていなかった場合は、コンテンツ ブラウザから アセット をインポートすることができます。[Add (追加)] ドロップダウン メニューから [Add Feature or Content Pack] を選択します。「コンテンツ ブラウザ インターフェース」を参照してください。
画像をクリックするとフルサイズで表示されます。
画像をクリックするとフルサイズで表示されます。
次のいずれかの方法で、スタティックメッシュ エディタ で SM_DoorFrame を開きます。
- アセットを ダブルクリック する
- アセットを 右クリック し、コンテキスト メニューから [Edit (編集)] を選択する
その後、下図のように、そのドアのフレームがスタティックメッシュ エディタに表示されます。
画像をクリックするとフルサイズで表示されます。
最初のソケットを作成する
スタティックメッシュ エディタでスタティックメッシュを開いたままにして、出入り口の中央に炎のパーティクルを配置するソケットを作成できます。
これを開始するには、スタティックメッシュ エディタ上部の [Window (ウィンドウ)] ドロップダウン メニューをクリックして、[Socket Manager (ソケット マネージャー)] を選択します。
画像をクリックするとフルサイズで表示されます。
以下に示すように、[Socket Manager] ウィンドウが [Details (詳細)] パネルの横に表示されます。開いたら、[Create Socket (ソケットを作成)] () をクリックします。
画像をクリックするとフルサイズで表示されます。
ボタンをクリックすると、ソケットが作成され、名前を変更するように求められます。この例では、Fire を使用しています。
画像をクリックするとフルサイズで表示されます。
ビューポートでスタティックメッシュを確認すると、ソケットに平行移動ウィジェットがあるのがわかります。ウィジェットがない場合は、ビューポートまたは [Socket Manager] パネルでソケットをクリックして、これを表示させるようにしてください。
画像をクリックするとフルサイズで表示されます。
ソケットが表示されると、位置が適切でない場合があります。新しいソケットを作成すると、ソケットはデフォルトでスタティックメッシュの原点に配置されます。この場合、ドアフレームの下部中央に配置されます。
ビューポートで平行移動ウィジェットを使用してソケットを手動で目的の位置に動かすか、その相対的な位置、回転、スケーリングを [Socket Manager] パネルから変更することができます。このガイドでは、プレイヤーがドアから通り抜けるときに炎の中を通らなければならないようにするため、出入り口の中央にソケットを配置する必要があります。
以下の画像に示すように、Z 値を相対位置 0 から 115 に変更します。
画像をクリックするとフルサイズで表示されます。
スタティックメッシュにオブジェクトをアタッチする
スタティックメッシュにソケットを配置して、レベルでスタティックメッシュへのオブジェクトのアタッチを開始できます。
スタティックメッシュ エディタ内のツールバーにある [Save (保存)] をクリックし、レベル エディタに戻ります。
コンテンツ ブラウザ 内で SM_DoorFrame を探して、そのコピーをレベルにドラッグします。次に、「Starter Content」フォルダにある「Particles」フォルダに進み、P_Fire という名前のアセットを探します。
画像をクリックするとフルサイズで表示されます。
P_Fire のコピーもレベルにドラッグします。このパーティクル エフェクトは、SM_DoorFrame にアタッチされた炎になります。
P_Fire のインスタンスをドラッグしたら、ビューポート内のパーティクルを 右クリック してコンテキスト メニューを開きます。
画像をクリックするとフルサイズで表示されます。
コンテキスト メニューで [Attach To (アタッチ先)] を選択します。検索ボックスで Door Frame と入力して SM_DoorFrame を選択します。
画像をクリックするとフルサイズで表示されます。
[SM_DoorFrame] を選択したら、オブジェクトのアタッチ先を選択します。このリストには、None およびスタティックメッシュのために作成したすべてのソケットが含まれます。リストから Fire を選択します。
画像をクリックするとフルサイズで表示されます。
アウトライナで P_Fire は SM_DoorFrame の子ですが、パーティクル エフェクトがソケットの位置にスナップしないことがあります。この場合、パーティクル エフェクトのトランスフォームの位置をリセットする必要があります。
画像をクリックするとフルサイズで表示されます。
P_Fire を選択したら、[Details] パネルの [Transform] セクションに移動します。[Location (位置)] バーの右端で、リセットを行う矢印 () をクリックして、設定をデフォルトに戻します。
SM_DoorFrame の子であるため、パーティクル エフェクトの位置は親に対して相対的です。そのため、ソケットにスナップすると、トランスフォーム値が 0,0,0 にリセットされます。
画像をクリックするとフルサイズで表示されます。
これでパーティクル エフェクトがスタティックメッシュにアタッチされました。

パーティクル エフェクトがソケットを介してスタティックメッシュにアタッチされると、スタティックメッシュとは別にパーティクル エフェクトを移動、回転、スケーリングさせることができます。ただし、スタティックメッシュに加えられたトランスフォームは、それにアタッチされているオブジェクトにも影響を及ぼします。
デタッチする
スタティックメッシュからオブジェクトをデタッチする場合、オブジェクトのアタッチと同じステップに従います。
デタッチしたいオブジェクト上で 右クリック して、コンテキスト メニューから [Detach (デタッチ)] を選択します。これで、オブジェクトはスタティックメッシュの子ではなくなります。
画像をクリックするとフルサイズで表示されます。
頑丈なドアで出入り口を作る
ソケットを使用して炎の出口を作成できたので、もっと実用的なものを作ります。
スターター コンテンツ 内の 「Props」 フォルダで、SM_DoorFrame を探して、もう 1 つのコピーをレベルにドラッグします。次に、SM_Door を探してレベルにドラッグします。
画像をクリックするとフルサイズで表示されます。
すでに作成したソケットを使用してドアフレームにドアをアタッチできますが、問題があります。スタティックメッシュの SM_Door では、下部の隅に原点があります。そのため、Fire ソケットにドアをアタッチすると、ドアが空中に浮いたままになり、戸口の隅で爆発します。この問題を修正するために、もうひとつ別のソケットを作ります。
新規ソケットを作成する
スタティックメッシュ エディタで SM_DoorFrame を再度開き、新しいソケットを [Socket Manager] パネルに追加します。ソケットの名前を「door」にすると、これがドア メッシュをアタッチする場所であると後で判別できます。
3D ウィジェットを使用してソケットを手動で動かしたり、その相対的な位置、回転、スケーリングを [Socket Manager] パネルから変更して動かしたりできます。この例では、ソケットの相対位置の Y の値を 42 に変更すると、ドアフレーム メッシュの下部の隅にソケットが配置されます。
画像をクリックするとフルサイズで表示されます。
ソケットが表示されていない場合は、ソケットが見えるように [Sockets (ソケット)] ボタンをハイライトします。
画像をクリックするとフルサイズで表示されます。
ドアをフレームにアタッチする
ドアをフレームにアタッチするためのソケットが用意できたので、ドアフレーム メッシュを保存してレベル エディタに戻ります。
レベル内にあるドア メッシュのインスタンスを選択し、右クリック してコンテキスト メニューを呼び出します。
コンテキスト メニューから [Attach] を選択し、SM_DoorFrame を検索します。
ドアをアタッチするドアフレームのインスタンスを探して、これを選択します。どのソケットに接続するかを尋ねられたら、Door を選択します。
画像をクリックするとフルサイズで表示されます。
デフォルトでは、SM_Door のコリジョンが設定されていません。レベルを再生すると、プレイヤーは頑丈なドアを通り抜けることができます。これではあまり都合がよくないので、スタティックメッシュ エディタ内のドアに シンプルなボックス コリジョン を設定します。Refer to Setting Up Collisions with Static Mesh to learn how.
コリジョンを設定後、ブループリントを使用して、開いたり閉じたりするドアのビヘイビアをスクリプト化します。方法については、「ドアを開ける」のガイドを参照してください。