fc2ブログ

凛(kagring)のUE5/UE4とゲーム制作と雑記ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用ブログです。ゲーム制作に関するメモや雑記とか色々あります。C++ での Qt、Unity もほんの少しあります。

2018年01月 | ARCHIVE-SELECT | 2018年03月

| PAGE-SELECT | NEXT

≫ EDIT

UE4 子どものコンポーネント(Component)一覧を配列で取得する(Get Children Components)

子どものコンポーネントを取得する方法です。
今回は配列で取得する方法です。
こちらを参考にさせていだきました!

・[UE4] 武器切り替え
http://monsho.blog63.fc2.com/blog-entry-132.html

子どものコンポーネントを取得するには
「Get Children Components」ノードを使います。
子のコンポーネント取得000
「Target」には子どもを取得したいコンポーネントを指定します。
「Include All Descendants」はチェックを入れると、子どもの子どもまで取得します。

この時、"Include All Descendants" にチェックを入れておきます。
このフラグは、子コンポーネントの子コンポーネントまで配列に含めるかを指定しています。

といった感じですね。
基本全部の階層のものが欲しい場合はチェックをいれましょう。

使い方としてはこういった使い方が多くなるのかなと思います。

"Get Root Component" でBlueprintのルートコンポーネントを取得し、そこから "Get Children Components" で子コンポーネントの配列を取得します。

アクターの一番親のコンポーネントは
「Get Root Component」ノードを使うのが良さそうです。

上記の処理がコンポーネント検索の基本になりそうですね。

| UE4 | 18:36 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 アクター(Actor)の一番親(ルート)のコンポーネントを取得する(Get Root Component)

アクターが持つ一番親(ルート)のコンポーネントの取得方法です。

こちらを参考にさせていただきました!

・[UE4] 武器切り替え
http://monsho.blog63.fc2.com/blog-entry-132.html

ルートのコンポーネントを取得するには
「Get Root Component」ノードを使います。
ルートのコンポーネント取得000
「Target」にはアクターを指定します。
「Return Value」には一番親のコンポーネントが返ります。

これだけなのですが、これ単体だとあまり使いみちがないので
「Get Children Components」ノードとかと組み合わせて使うことが多くなりそうですね。

| UE4 | 12:58 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

コンポーネント(Component)にタグ(Tag)があるかどうかチェックする(Component Has Tag)

コンポーネント(Component)に指定したタグ(Tag)があるかどうかをチェックする方法です。
こちらを参考にさせていだきました!

・[UE4] 武器切り替え
http://monsho.blog63.fc2.com/blog-entry-132.html

コンポーネントにタグがあるかどうかは
「Component Has Tag」ノードを使います。
コンポーネントのタグチェック001
「Target」にはコンポーネントを指定します。
「Tag」にはチェックしたいタグの名前を指定します。
タグがそのコンポーネントにある場合はTrueを返します。

TagはName型で設定し、複数設定することも可能です。
このTagの主な用途は、特定用途のコンポーネントやアクターの検索です。


記事にある感じだと、検索するための用途に使う時に
これでタグをチェックするのが良さそうですね。

| UE4 | 16:46 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 コンポーネント(Component)にタグ(Tag)を追加する、タグ(Tag)の一覧を取得する(Get Component Tags)

コンポーネント(Component)にタグ(Tag)を追加する方法です。
こちらを参考にさせていだきました!

・[UE4] 武器切り替え
http://monsho.blog63.fc2.com/blog-entry-132.html

タグを追加するには「Get Component Tags」ノードを使います。
コンポーネントにタグの追加002
「Target」はコンポーネントを指定します。

これでタグの一覧を配列として取得することができます。

タグを追加するには、このName 配列に対して「Add」ノードで足してあげるだけです。
コンポーネントにタグの追加001
こんな感じで「NewTag」というタグを追加できます。

実際にコンポーネントを動的に追加してタグを追加するとこんな感じに。
コンポーネントにタグの追加000

タグは記事にある以下のような用途で使うことが多そうです。

コンポーネントやアクターにはTagを追加することが可能です。
TagはName型で設定し、複数設定することも可能です。
このTagの主な用途は、特定用途のコンポーネントやアクターの検索です。

| UE4 | 13:01 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 アクター(Actor)とコンポーネント(Component)の「Event Tick」を実行しない(停止する)ようにする(Set Actor and Component Tick Enabled)

アクター(Actor)とコンポーネント(Component)両方の
Event Tick 時に処理を実行しないように設定をする方法です。

アクター単体だと「Set Actor Tick Enabled」ノード。
コンポーネント単体だと「Set Component Tick Enabled」ノード。

となっているものの両方版みたいですね。

アクターとコンポーネントの両方をセットするには
「Set Actor and Component Tick Enabled」ノードを使います。
コンポーネントとアクターのTICK有効000
「In Actor」にはアクターを指定します。
「In Enabled」には Tick 処理が有効かどうかを指定します。

といった感じですね。

このノードは「UE4 Toolkit」というカテゴリに属しているので
ちょっと謎いのですよね。

| UE4 | 15:13 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 コンポーネント(Component)の「Event Tick」が呼ばれる間隔を変更する(Set Component Tick Interval、Get Component Tick Interval)

アクターの方はすでに知っていたのですが
コンポーネント(Component)で「Event Tick」が呼ばれる間隔を制御する方法です。

公式ドキュメントはこちら。

・Set Component Tick Interval
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Utilities/SetComponentTickInterval/

「Event Tick」時にコンポーネントの処理が呼ばれる間隔を制御するには
「Set Component Tick Interval」ノードを使います。
コンポーネントのTICK001
「Target」には「Component」を指定します。
「Tick Interval」には「Event Tick」が呼ばれる間隔を秒で指定します。

「Tick Interval」で例えば0.5秒を指定した場合、
「Event Tick」が呼ばれたときに前回から0.5秒以上の間隔がある場合に実行される。
可変フレームで作られてると思うので、必ずしも0.5秒間隔でくるとは限らない。
みたいなのかなと思います(自信はない)
0.0秒を指定すると「Event Tick」が毎回呼ばれるといった感じですかね。
(デフォルト値がわからない)

現在コンポーネントにセットされているTick間隔を取得するには
「Get Component Tick Interval」ノードを使います。
コンポーネントのTICK003
「Target」には「Component」を指定します。
「Return Value」には今のコンポーネントのTick間隔が返されます。

アクター単位はなんとなく優先度としてあるのかなーぐらいで
それでも使い所は難しそうな印象なのですが
コンポーネント単位の制御はもっと細かい制御になりそうですね。

| UE4 | 17:06 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 コンポーネント(Component)の「Event Tick」を実行しない(停止する)ようにする(Set Component Tick Enabled、Is Component Tick Enabled)

アクターの方はすでに見つけていたのですが
コンポーネント(Component)の「Event Tick」を停止(実行しないように)する方法です。

公式ドキュメントはこちら。

・Set Component Tick Enabled
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Utilities/SetComponentTickEnabled/

コンポーネント単位で「Event Tick」を実行しないようにするには
「Set Component Tick Enabled」ノードを使います。
コンポーネントのTICK000
「Target」には「Component」を指定します。
「Enabled」には有効ならtrueを。無効ならfalseを指定します。

と、これだけですね。
コンポーネント単体でのTick処理を止めたい場合とかに使う感じですかね。

現在コンポーネントのTickが有効かどうかを調べるには
「Is Component Tick Enabled」ノードを使います。
コンポーネントのTICK002
「Target」には「Component」を指定します。
有効であれば「Return Value」がTrueを返します。

| UE4 | 16:47 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 BPでモデルをコンポーネントとしてメッシュコンポーネントの指定したソケットに動的にアタッチする(Attach Component To Component、旧 Attach To Component)

キャラクターに武器をもたせたり、アクセサリをアタッチしたりする方法を探していて
今回はコンポーネントを追加して、ソケットにアタッチする方法です。

こちらを参考にさせていただきました。というかまんまですね。

・[UE4] 武器切り替え
http://monsho.blog63.fc2.com/blog-entry-132.html

まずはアタッチしたいメッシュを
「Add Static Mesh Component」と「Set Static Mesh」を使って追加します。
メッシュの追加000
こんな感じですね。

ただ追加しただけだとこんな感じになります。
外部アタッチ000
包丁が空中に浮いた感じになります。
これだけだとまだアタッチされていない状態です。

これをグレイちゃんの左手にアタッチします。
アタッチするには「Attach To Component」ノードを使います。
外部アタッチ003
「Target」にはアタッチするコンポーネントを指定します。
今回だと武器のメッシュコンポーネントですね。
「Parent」には親のコンポーネントを指定します。
今回はグレイちゃんのメッシュコンポーネントになります。
「Socket Name」にはアタッチしたいソケット名を指定します。
「Location Rule」にはアタッチしたときの位置情報をどうするかを指定します。
「Rotation Rule」にはアタッチしたときの回転情報をどうするかを指定します。
「Scale Rule」にはアタッチしたときのスケール情報をどうするかを指定します。
「Weld Simulated Bodies」はちょっとわからないですね…。

とりあえずアタッチしてみました。
外部アタッチ001
無事?左手に包丁を持つことができました。
全然持ててませんが左手にアタッチされています。

とりあえず手にアタッチしてみましたが
元から武器用のソケットをモデルに含めるか、新たにソケットを追加してそこにアタッチするのがよさそうです。

今回やってみたBPはこんな感じです。
外部アタッチ002

とりあえずコンポーネントでアタッチしてみましたが
武器のアタッチはこれらでよさそうです。
それとは別に、アクターをアタッチするというのは今度調べてみようと思います。

4.26追記。
現在だと「Attach To Component」は廃止され「Attach Component To Component」ノードで代用するようです。

「Attach Component To Component」ノードはこちらに。
AttachComponentToComponent001.jpg
中身は一緒なので「Attach To Component」から名称が変わっただけっぽいですね。

ノードを使うとこんな感じに。
AttachComponentToComponent000.jpg

結果はこんな感じに。
AttachComponentToComponent003.jpg
左手に無事武器を持っていますね(向きは変ですが)

できれば名称変えるだけどいうのは混乱するのでやめてほしいところです…。

| UE4 | 17:37 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 アクター(Actor)にスタティックメッシュコンポーネント(Mesh Component)を追加してメッシュをセットする(Add Static Mesh Component、Set Static Mesh)

アクター(Actor)に対してメッシュコンポーネント(Mesh Component)を追加する方法と
追加したメッシュコンポーネント(Mesh Component)に対して、メッシュをセットする方法です。

こちらを参考にさせていただきました!

・[UE4] 武器切り替え
http://monsho.blog63.fc2.com/blog-entry-132.html

やりたいことはこのサイトに書いてあるとおり、
キャラクターに武器をもたせることなのですが、
今回はその前の準備段階ってところになります。

まず、アクターにメッシュコンポーネントを追加します。
追加するには「Add Static Mesh Component」ノードを使います。
メッシュの追加001
「Target」にはアクターを指定します。

これで「Static Mesh Component」が追加されます。
今回は武器を追加したいのでスタティックメッシュにしました。

次に、このコンポーネントにメッシュをセットします。
メッシュをセットするには「Set Static Mesh」ノードを使います。
メッシュの追加002
「Target」にはメッシュコンポーネントを指定します。
「New Mesh」にはメッシュを指定します。

これでメッシュをセットしたメッシュコンポーネントが追加されました。
実際の処理はこんな感じに。
メッシュの追加003
こんな感じでアクターにメッシュが追加されました。

これだけだとただ追加されただけなので。
次はキャラクターにこのメッシュをもたせたり、アタッチするところをやろうと思います。

| UE4 | 13:53 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 エディタでオブジェクトの移動量や回転量を指定した単位ごとに変化させる

オブジェクトを移動させるときに、微細な移動量ではなく
指定した単位ごとにオブジェクトを動かす方法です。

参考にさせていただいたサイトはこちら。

・UE4 エディタ⑥ オブジェクトを動かす
http://manabibeya.com/ue4tutorial/editor/editor6/

エディタのビューポートの右上にあるマス目状のアイコンを押して有効にします。
グリッド移動000
オレンジになっているのが有効状態です。

これだけで無効の状態だと、滑らかに微細に移動していたものが
カクカクしたグリッド単位で移動するようになります。

単位の設定はマス目状のアイコンの隣のアイコンを押して設定します。
グリッド移動001
ここで選択した単位で吸着して動くようになります。

小数点など微細な情報がいらない場合はこれらを使ってもいいかもですね。
隣にあるアイコンでは回転角度も設定できるので
こちらも用途に合わせて使ってみるのがよいかもしれないですね。

| UE4 | 16:19 | comments:0 | trackbacks:0 | TOP↑

| PAGE-SELECT | NEXT