Choose your operating system:
Windows
macOS
Linux
UE4 でレベルを作成していると、スタティックメッシュに何かをアタッチすることがあるでしょう。ワールド アウトライナー でスタティックメッシュにオブジェクトを親子付けすることはできます。しかし、メッシュに対して配置したい場所に正確に位置付けしなければならず、とても面倒です。しかし、ソケットを使用してスケルタルメッシュにオブジェクトをアタッチできるのと同様に、ソケットを使用してスタティックメッシュにオブジェクトをアタッチすることができます。スタティックメッシュ エディタでソケットを作成し、それをメッシュに対して配置したい場所に配置し、オブジェクトをアタッチするだけで簡単にできます。それがライト、パーティクル エフェクトであれ、場合によっては別のスタティックメッシュであってもメッシュにアタッチできます。この操作ガイドではスタティックメッシュに対してソケットを作成する方法とレベルで使用する方法について説明します。
セットアップ
既に作業対象の独自のレベルとスタティックメッシュをお持ちである場合は、この手順をスキップできます。そうでなければ、ランチャーから UE4 を起動し、新規プロジェクトを作成します。必ず、プロジェクトの保存先のパスを選択し、名前を付けます。作業するテンプレートも選択します。以下の画像では、Blueprint First Person Template を選択しましたが、どのテンプレートでもご使用いただけます。
スターター コンテンツ が有効になっていることを確認してください。有効にしないと、この操作ガイドで後で使用する一部のアセットが存在せず、理解が難しくなるかもしれません。
1 つめのソケットを作成する
プロジェクトが開いたら、コンテンツ ブラウザ で スターター コンテンツ を探します。次に 「Props」 フォルダまで移動し、「SM_DoorFrame」という名前のスタティックメッシュを探します。
SM_DoorFrame を見つけたら、以下のいずれかの方法でスタティックメッシュ エディタ内で開きます。このアセットを ダブルクリック するか、アセットを 右クリック してコンテキスト メニューから [Edit (編集)] を選択して開きます。上記を行うと、以下の画面に類似したものになります。
スタティックメッシュ エディタでメッシュを開いたら、出入り口の中央に炎のパーティクルを配置し、破滅への通路を作るソケットを作成します。最初に、ソケットを作成する必要があります。これを行うには、エディタ上部の [Window (ウィンドウ)] ドロップダウン メニュー上をクリックして、[Socket Manager (ソケット マネージャ)] を選択します。すると、[Socket Manager] ウィンドウが表示されます。以下の画面に類似したものになります。
[Socket Manager] ウィンドウが開いたら緑でハイライトされた [Create Socket (ソケット作成)] ボタンをクリックします。クリックすると、新しいソケットが作成され、名前を付けるように促されます。この例では、ソケットに Fire と名前を付けます。[Create Socket] ボタンをクリックすると、[Socket Manager] ウィンドウは以下の画面に類似したものになります。
ビューポートでメッシュを見ると、平行移動ウィジェットを備えた 3D ウィジェットがあるのがわかります。3D ウィジェットがない場合は、ツールバーの [Sockets] ボタンをクリックしてソケットを表示させるようにしてください。 (
ソケットが見えるようになったとき、必要な位置にないかもしれません。新しいソケットを作成した場合、デフォルトでスタティックメッシュの原点、メッシュ下部中央に位置するかもしれません。ここでは、プレイヤーが出入り口を歩いて通り抜けるときに炎の中を通らなければならないようにするため、出入り口の中央にソケットが存在する必要があります。ビューポートで平行移動ウィジェットを使用してソケットを手動で動かしたり、その相対的な位置、回転、スケーリングを [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 がスタティックメッシュ上のソケットがある場所に魔法のようにスナップします。これでパーティクル エフェクトがスタティックメッシュにアタッチされました。
パーティクル エフェクトがソケットを介してスタティックメッシュにアタッチされました。スタティックメッシュとは別にパーティクル エフェクトをを移動、回転、スケーリングさせることはできますが、スタティックメッシュに加えられた変形はそれにアタッチされているオブジェクトにも影響を及ぼします。
デタッチ
別のオブジェクトにアタッチされているオブジェクトをデタッチする場合は、オブジェクトを別のオブジェクトにアタッチする時と同様に簡単です。デタッチしたいオブジェクト上で 右クリック して、表示されるコンテキスト メニューから [Detach] を選択します。これでオブジェクトは他のオブジェクトにアタッチされない状態になります。
頑丈なドアで入り口を作る
ソケットを使用して破滅への通路を作ったので、ソケットを使用してもう少し実用的なものを作ります。スターター コンテンツ 内の「Props」フォルダで、SM_DoorFrame を見つけて、もう 1 つコピーをレベルにドラッグします。SM_Door が見つかったら、そのコピーもレベルにドラッグします。既にあるソケットを使用してドアフレームにドアをアタッチするには問題があります。オブジェクトを別のオブジェクトにアタッチすると、オブジェクトはその原点でソケットにアタッチされます。スタティックメッシュの SM_Door では、下部の隅に原点があります。そのため、Fire ソケットをドアにアタッチすると、ドアが空中に浮いたままになり、戸口の隅で爆発します。この問題を修正するために、もうひとつ別のソケットを作ります。
新しいソケットを作成する
コンテンツ ブラウザ で SM_DoorFrame を見つけて、そのアセット上で ダブルクリック して、スタティックメッシュ エディタで開きます。[Socket Manager] パネルがまだ開いている場合は、[Add Socket (ソケットを追加)] ボタンをクリックします。パネルが開いていない場合は、エディタ上部の [Window (ウィンドウ)] ドロップダウン メニューから、[Socket Manager] を選択し、このパネルを再度開き、[Add Socket] ボタンをクリックします。
ソケットを作成すると名前を付けるように促されます。この例では、このソケットに「Door」と名前を付けて、ドア メッシュにアタッチすることを意図したソケットであると後で判別できるようにします。繰り返しになりますが、一度ソケットを作成するとメッシュの原点に作成されます。この場合は、ドアフレームの下部中央になります。ドアメッシュの原点は下部の隅であるため、ここに Door ソケットを移動します。3D ウィジェットを使用してソケットを手動で動かしたり、その相対的な位置、回転、スケーリングを [Socket Manager] パネルから変更して動かすことができます。この例ではソケットの相対位置の Y の値を 45 に変更すると必要とする結果が得られます。下部の隅にソケットを移動したら、ドアフレームのメッシュは以下の画面に類似したものになります。
ソケットが表示されていない場合は、ソケットが見えるように
ドアをフレームにアタッチする
ドアをフレームにアタッチするためのソケットが用意できたので、ドアフレーム メッシュを保存してレベル エディタに戻ります。レベル内にあるドアのインスタンスを選択し、右クリック してコンテキスト メニューを呼び出します。コンテキスト メニューから [Attach] を選択し、SM_DoorFrame を検索します。ドアをアタッチするドアフレームのインスタンスを見つけて、その上で 左クリック して選択します。どのソケットにアタッチするかを尋ねられたら、 Door を選択します。操作を終了すると、以下のようになるはずです。
SM_Door のデフォルトではコリジョンが設定されません。レベルを再生すると、プレイヤーは頑丈なドアを通り抜けることができます。これではあまり都合がよくないのでスタティックメッシュ エディタ内で単純なボックス コリジョンを設定して、ドアが閉じている時はプレイヤーの通り抜けができないようにします。この方法が分からない場合は こちら を参照してください。
プレイヤーは頑丈なドアを通り抜けることができないので、ブループリントを使用してドアの挙動をスクリプト処理して開閉可能にします。この操作ガイドではこの方法については説明しませんが、プレイヤーをブロックし、ドアフレームにアタッチするドアの準備ができました。ドアを開閉させる挙動のスクリプト処理については、 こちら を参照してください。