[ue4]チャイルドアクターシンドローム

#【前提】
__・ue4のバージョンはue4.14.1を前提にしています。__
__・うそを書くつもりはありませんが。経験や独学で学習した知識に基づいて記述しているため、間違いが多分にある可能性があります。__
__・チャイルドアクターテンプレートは新機能故にまだ枯れていない技術です。私が実験的に使用した例を記述していますが、間違いが多分にある可能性があります。__
__・裏 Unreal Engine 4 (UE4) Advent Calendar 2016　12月25日の記事の一つになります。__
他の記事
__[ue4]ゲームと構図のアンニュイな関係__
http://qiita.com/housakusleeping/items/c1c8a2673315bb25a32f
__[ue4]加算キーによるアニメーション沼__
http://qiita.com/housakusleeping/items/34342c633c4b57dfac47


#【目的】
ue4.14で新たに追加された？チャイルドアクターテンプレートについて書きます。

#【チャイルドアクターとは】

名前のとおり、アクターの子供的なものです。
親のアクターにコンポーネントとして付けて使うことができます。

赤線で囲っている部分がチャイルドアクターコンポーネントです。
![2-1.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/9d9e41a0-ed34-313e-c0e7-872608cb0566.jpeg)

#【チャイルドアクターコンポーネント作り方】

１）子供のアクター作成
子供のアクターにしたいブループリントクラス（アクター）を右クリックし「子ブループリントクラスを作成する」を選択します

![2-2.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/78716bfb-ff35-b653-c3c1-5b832e482b96.jpeg)

２）親に子供を接続
子供のアクターができたら（実は子供のアクターではなくそのままアクターでも以下の手順は可能です）
親のブループリントクラス（アクター）のコンポーネント部分にドラッグ＆ドロップします。

![2-3.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/acf1086f-18d7-614b-286c-5dd43f44ed52.jpeg)

３）チャイルドアクターコンポーネントが接続される
![2-4.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/e4076de2-d11e-146b-e810-d77922b04808.jpeg)
画像の様に親のアクターに子供のアクターが接続されました。


#【ue4.13とue4.14の違い】

実はここまではue4.13でも同じことが可能でした。試しにue4.13で同じ様なことをやってみた例です。

![2-5.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/9ca04551-684d-556c-0a22-bceadeae97a6.jpeg)

このように同じようにチャイルドアクターコンポーネントが追加されます。

では、違いはどこでしょうか？

ue4.13はこうです。
![2-6.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/869a6a81-571a-e628-f7c6-3753c4e7bf0d.jpeg)

ue4.14です。
![2-7.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/8108d17f-31be-9414-fba6-7b63af50f241.jpeg)
__チャイルドアクターテンプレート__という項目が増えています。

ここを開くと、、、
![2-8.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/fa324283-3a82-daef-63bb-2cb946de2945.jpeg)

このように様々はパラメータが現れます。
この中には子アクターの中で使用している変数などがありますが
中には謎のパラメータもあります。

#【チャイルドアクターテンプレートをブループリントで使ってみる】

テンプレートというくらいですから、色々なテンプレートを作って差し替えができるのかなぁ
と想像できますが。そのあたりの使い方は私はまだわかりません。

ですので、親ブループリントから子のアクターの変数を操作する方法を紹介してみます。

１）チャイルドアクターコンポーネントをイベントグラフへ
![2-10.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/1033162d-b00d-a9fa-3b83-55ec3b915543.jpeg)
チャイルドアクターコンポーネントをイベントグラフへ持っていき

２）「get child actor」でブループリントを検索

![2-11.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/abd0f9da-775d-5812-5ffe-2e5680124c1f.jpeg)

チャイルドアクターコンポーネントを取得するブループリントを配置します。


３）get child actor

![2-12.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/9761d798-3234-aaf8-3711-4672477e345c.jpeg)

４）キャストして変数を操作
ここからは皆さんがよく使われるキャストして変数を変更したりする手順に同じです。
![2-13.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/0084ba07-5f72-d7bf-48da-bfccf33dfa7d.jpeg)

このような感じでチャイルドアクターコンポーネントの変数にアクセスできます。

#【チャイルドアクターテンプレートをデフォルト値として使う】
下記のようにテンプレートの部分の子アクターの変数を最初に入れてしまって
それをデフォルトとして使用することもできます。
![2-14.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/a265ad21-3e6a-cd01-bf72-f0895d41964f.jpeg)

このように設定しておけばチャイルドアクターを作った元のブループリントクラス（アクター）と関係なく初期値を設定できます。

#【最後に】

最後まで読んでいただいてありがとうございます。
チャイルドアクターコンポーネントテンプレートはue4.14から追加された新機能です。
まだまだ謎の多い機能ですが、
今後、ドキュメントが整備されれば色々な使い方ができるかもしれません。

最後の最後に、「裏 Unreal Engine 4 (UE4) Advent Calendar 2016」はこれにて終了になります。
アドベントカレンダーを執筆されたみなさん、読者のみなさん、今年一年、お疲れ様でした。
良いお年を。