このページでは、スプライトにソケットを追加した後にオブジェクトを親子付けすることができるブループリント内からこれらの追加したソケットにアクセスする方法を学びます。スプライトソケットからパーティクルエフェクトをスポーン(例えば燃えているキャラクター)、キャラクターの手に武器を親子付け(銃や刀)、またはスプライトのソケットにスポーンしたり親子付けが必要なさまざまなアイテムを設定することが出来ます。
この例では、キャラクターの頭に帽子を親子付けします。
複数のスプライトにソケットを追加する方法:
-
ソケットを追加するスプライトを検索してこれを開きます。
-
[Details] パネルで [Sockets] の横に表示されている + をクリックして新規ソケットを追加します。
-
[Socket Name] に入力して、ビューポート内の Local Transform またはウィジェットを使用して、設定したい場所へソケットを移動させます。
ビューポート内でソケットを移動させるには、最初にソケットにズームインしてからクリックする必要があるかもしれません。
重要なのはここで入力するソケット名を必ず覚えておくことです。例では HatSocket と名前を付けた新規のソケットを作成して、これにキャラクターがかぶる 2D の帽子をスポーンさせます。例では1つのスプライトしか取り上げていませんが、アイドル時に発生するアニメーションに8つのスプライトを使用しているため、これらのスプライトにもソケットを追加しなくてはいけません。
Property Matrix を使用すれば簡単に追加できます。
複数のスプライトにソケットを追加する方法:
-
コンテンツ ブラウザ でソケットを適用するスプライトを Flipbook アニメーションからすべて選択します。
-
スプライトを 右クリック して [Asset Actions] セクションから [Property Matrix...] を選びます。
[Property Matrix] を開いてすべてのスプライトを同時に修正することで時間を短縮することができます。
8フレーム全てを選択するために、リファレンス用に既にソケットを追加したスプライトも選択します。
-
[Property Matrix] 内で各スプライト(ソケットなし)を選択してから、+ をクリックしてそれぞれにソケットを追加します。
-
エレメント 0 を展開して、Socket Name で最初のスプライトと同じ名前を付けます (例では HatSocket)。
-
Local Transform を展開してから、[Translation] セクションで XYZ の値を最初のスプライトと同じ値に設定します。
-
アニメーションの各スプライトを開いて、ソケットがそれぞれにきちんと追加されていることを確認します。
フレームに適した位置となるように、スプライトごとにソケットの位置の調整が必要な場合もあります。
フリップブックの各フレームにソケットを親子付けしたので、ソケットの位置でアクタをスポーンするようにブループリントに伝えることができます。
ブループリント経由でスプライトソケットにアクセスする:
-
Character ブループリントの [My Blueprint] ウィンドウで、目のアイコンと [Show Inherited Variables] をクリックします。
-
左クリック してキャラクターの Sprite コンポーネントにドラッグします。
-
Event Begin Play ノードを引き出して Spawn Actor from Class ノードを追加します。
-
Spawn Transform に Make Transform ノードを使用して Return Value を Attach To ノードに接続します。
-
Sprite コンポーネントを In Parent と接続して、In Socket Name に作成したソケットの名前を入力します。
設定は上図のようになっているはずです。一例として、作成した HatSocket 位置でキャラクターに親子付けしているハットのスプライトコンポーネントを格納する Hat_BP という名前のブループリントをスポーンさせるだけです。アイドルなフレームで行った上記の同一プロセスでは、ゲームでハットをかぶったキャラクターで終わるように実行フレームで実行しました(以下に表示)。
-
コンパイル してエディタでプレイすると、スポーンした Actor クラスがソケット位置でスポーンして親子付けされます。
スプライトにソケットを追加して、任意の数の異なる要素をこのソケットに親子付けすることができます。スプライトがフリップブックの一部であることやアニメーションの一部であることは関係なく、ソケットに接続する対象はすべてユーザーの判断でおこなってください。