fc2ブログ

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

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

2017年10月 | ARCHIVE-SELECT | 2017年12月

| PAGE-SELECT | NEXT

≫ EDIT

UE4 イベント以外でキーを押しているかどうかを受け取る(Is Input Key Down)

イベント以外でキーを押しているかを取得する方法です。
詳しい内容はこちらに。

[UE4] Input入門
http://historia.co.jp/archives/317

キー入力を受け取るには「Is Input Key Down」ノードを使います。
キー入力受取IsInputKeyDown002
「Target」には「Player Controller」を指定します。
「Key」には取得したいキーを指定します。
「Return Value」は押されていればTrueが返ります。

プレイヤーコントローラーはこんな感じで渡します。
キー入力受取IsInputKeyDown001
この処理だとキーボードの「K」が押されていればtrueが返ります。

というわけで組んでみるとこんな感じに。
キー入力受取IsInputKeyDown000

この手法だとどこでも受け取ることができるので
「キーを押しながら何か」というのを実装するときに良いかもしれないですね。

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

≫ EDIT

UE4 一定時間ごとのタイマー処理を行う(Set Timer by Event、Clear and Invalidate Timer by Handle)

イベント名や関数名を指定する以外での、ハンドルを使ったタイマー操作の方法です。
ここらへんを参考にさせてもらいました!

・【UE4】一定時間毎に関数やカスタムイベントを呼び出すSet Timeノードの名称変更について
http://satcreative.hatenablog.com/entry/2016/12/04/225755

・ブループリントでタイマーを使用する
https://docs.unrealengine.com/latest/JPN/Gameplay/HowTo/UseTimers/Blueprints/index.html

タイマー処理を開始するには「Set Timer by Event」ノードを使います。
タイマーイベントハンドル001
「Event」にはカスタムイベントを指定します。
「Time」にはタイマーの周期を秒で指定します。この周期ごとに実行されます。
「Looping」には繰り返し処理をするかを指定します。
これにチェックを入れない場合は、一回だけ処理を行って終了します。
「Return Value」でタイマーのハンドルが取得できます。
タイマーを削除したり、停止したりするのに必要なので受け取っておきましょう。

上記だと、0.5秒ごとに処理されるといった感じですね。

タイマー処理を止めたい場合は「Clear and Invalidate Timer by Handle」ノードを使います。
タイマーイベントハンドル002
「Handle」には「Set Timer by Event」で作られたタイマーのハンドルを指定します。

これでタイマーの作成と削除をすることができます。
実際にノードを組んでみるとこんな感じですね。
タイマーイベントハンドル000
ちょっとめんどくさかったので、ハンドルなどを変数には落としてませんが。

タイマーの作成は簡単にするとこんな感じに。
タイマーイベントハンドル003

タイマーの削除はこんな感じになります。
タイマーイベントハンドル004

タイマー処理は覚えておくといろいろな場面で使えそうですね。

| UE4 | 11:40 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 関数名を指定して一定時間ごとのタイマー処理を行う(Set Timer by Function Name、Clear Timer by Function Name)

前にメモしておいた下記処理が関数も指定できたのでメモです。

・カスタムイベント名を指定して一定時間ごとのタイマー処理を行う(Set Timer by Function Name、Clear Timer by Function Name)
http://kagring.blog.fc2.com/blog-entry-350.html

タイマー処理を行うには「Set Timer by Function Name」ノードを使います。
タイマーイベント000
「Object」には関数を実装しているアセットを指定します。
※カスタムイベントでも可
「Function Name」には関数名を指定します。
※カスタムイベント名でも可
「Time」にはタイマーの周期を秒で指定します。この周期ごとに実行されます。
「Looping」には繰り返し処理をするかを指定します。
これにチェックを入れない場合は、一回だけ処理を行って終了します。

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

・Set Timer by Function Name
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Utilities/Time/SetTimerbyFunctionName/

上記「Set Timer by Function Name」で指定したもの処理したい場合に
関数の方を実装してみるとこんな感じになります。
タイマーイベント003
「Timer Function」が0.1秒ごとに実行されるという感じですね。

タイマー処理を止めたい場合は「Clear Timer by Function Name」ノードを使います。
タイマーイベント001
「Object」には関数を実装しているアセットを指定します。
※カスタムイベントでも可
「Function Name」にはカスタムイベント名を指定します。
※カスタムイベント名でも可

これでタイマー処理を削除することができます。
繰り返し処理を全然別の場所で行いたい場合とかに重宝しそうですね。
関数とカスタムイベント両方使えるので結構使い所はありそうですね。

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

≫ EDIT

UE4 カスタムイベント名を指定して一定時間ごとのタイマー処理を行う(Set Timer by Function Name、Clear Timer by Function Name)

タイマー処理を行う方法です。
今回の方法だとカスタムイベント名を指定することができます。
詳しい内容はここらへんをみたほうがよさそうです。

・ブループリントでタイマーを使用する
https://docs.unrealengine.com/latest/JPN/Gameplay/HowTo/UseTimers/Blueprints/index.html

・【UE4】一定時間毎に関数やカスタムイベントを呼び出すSet Timeノードの名称変更について
http://satcreative.hatenablog.com/entry/2016/12/04/225755

タイマー処理を行うには「Set Timer by Function Name」ノードを使います。
タイマーイベント000
「Object」にはカスタムイベントを実装しているアセットを指定します。
※関数でも良いっぽいので今後検証
「Function Name」にはカスタムイベント名を指定します。
※関数名でも良いっぽいので今後検証
「Time」にはタイマーの周期を秒で指定します。この周期ごとに実行されます。
「Looping」には繰り返し処理をするかを指定します。
これにチェックを入れない場合は、一回だけ処理を行って終了します。

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

・Set Timer by Function Name
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Utilities/Time/SetTimerbyFunctionName/

上記「Set Timer by Function Name」で指定したもの処理したい場合に
カスタムイベントの方を実装してみるとこんな感じになります。
タイマーイベント002
「Repeat Function」が0.1秒ごとに実行されるという感じですね。

タイマー処理を止めたい場合は「Clear Timer by Function Name」ノードを使います。
タイマーイベント001
「Object」にはカスタムイベントを実装しているアセットを指定します。
※関数でも良いっぽいので今後検証
「Function Name」にはカスタムイベント名を指定します。
※関数名でも良いっぽいので今後検証

これでタイマー処理を削除することができます。
繰り返し処理を全然別の場所で行いたい場合とかに重宝しそうですね。
カスタムイベントだけかなと思ったら関数も使えるっぽいので
ちょっと調べてみようと思います。

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

≫ EDIT

UE4 AnswerHub について

AnswerHub とは UE4 で困ったことがあったときなどに質問などできる場所みたいですね。
答える人も普通の人であったりするようです。

日本のページだとこんな感じみたいです。
https://answers.unrealengine.com/spaces/16/japanese.html

だいたい問題を検索すると英語のページにあたったりしますが…。

この AnswerHub についての使い方のドキュメントがあるようです。

・Answerhub クイックスタートヘルプ日本語訳
https://answers.unrealengine.com/questions/687897/index.html

UE4で困ったことがあった場合は、上記ページをよく読んで
AnswerHub を利用してみるのがいいのかなと思います。

| UE4 | 11:42 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 配列の中身を入れ替える(Set Array Elem)

こういうツイートを見かけました。

「SetArrayElem」というノードがあるようですね。
これを使うと配列の要素を入れ替えることができるようです。

詳しい説明はここでもとりあげられていました。

・配列のInsertとSetArrayElemの違い
http://imoue.hatenablog.com/entry/2015/12/21/215934

これ読んでて思ったのですが、
プログラマ的にはInsertって普通に挿入なので
要素が増えるのが当たり前だと思ってるのですが勘違いしやすいかもですね。

というわけで使ってみました。
配列の中身入れ替え001
「Target Array」には配列を指定します。
「Index」には入れ替えたい配列のインデックスを指定します。
「Item」には入れ替えたい要素を指定します。
「Seize to Fit」「Index」が配列の「Length」よりも大きい場合に
配列のサイズを指定された「Index」のサイズに拡張して要素を入れ込む

といったものになるようです。

「Seize to Fit」にチェックを入れない状態で、
「Index」を配列サイズよりも大きい値で指定した場合は特に何もおきないようです。

If true, the array will expand if Index is greater than the current size of the array


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

・Set Array Elem
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Utilities/Array/SetArrayElem/

配列についてはこちらも読んでおくと良さそうです。

・配列ノード
https://docs.unrealengine.com/latest/JPN/Engine/Blueprints/UserGuide/Arrays/ArrayNodes/index.html

実際に使ってみるとこんな感じに。
配列の中身入れ替え000

上記処理はこんな感じの配列変数を使ってます。
配列の中身入れ替え002

配列については結構専用のノードが多そうですね。

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

≫ EDIT

UE4 ツイッター(Twitter)の投稿画面を内容を指定してWEBブラウザで開く

ツイッター投稿画面をWEBブラウザから開く方法です。
ブラウザ画面に移行しないといけませんが、一応投稿はできるので機能的には問題ないかなと。

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

・【第7回UE4ぷちコン】簡易的にUE4でTwitter投稿する方法
https://qiita.com/YuukiOgino/items/7db7ba6001c6c65a4e0e

「LaunchURL」ノードを使って、ツイッターに投稿する文字列を送ればいいだけみたいですね。
URLを開く000

こんな感じのノードでいけます。
ツイッター投稿000

あとはクエリパラメータのtextに投稿したい文章を入れるだけです。
ついでにハッシュタグのクエリパラメータをつけています。


とのことなので、

https://twitter.com/intent/tweet?text=
投稿するテキスト
&hashtags=ハッシュタグ


という3つにとりあえず分離して文字列を結合して送っています。

他にどんなクエリパラメータがあるのかは、Twitter 開発者 ドキュメント日本語訳を見てください。


というわけでこちらもメモ。

・Twitter 開発者 ドキュメント日本語訳
http://westplain.sakuraweb.com/translate/twitter/Documentation/Twitter-for-Websites/Tweet-Button/Web-Intent.cgi

できればアプリ内で投稿したいですが…。
その方法も探してみたいですね。

| UE4 | 11:45 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 OSに設定されたブラウザでURLを開く(Launch URL)

ブラウザでURLを開く方法です。

URLをブラウザで開くには「Launch URL」ノードを使います。
URLを開く000
「URL」には開きたいURLを設定します。

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

・Launch URL
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Utilities/Platform/LaunchURL/

Opens the specified URL in the platform's web browser of choice


と書かれているので、OSに設定されているブラウザで開かれるようですね。

ドキュメントとか公式サイトとかに誘導するときに使えそうです。

| UE4 | 11:48 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 文字列配列を結合して一つの文字列にする(Join String Array)

文字列の配列(String配列)を一つの文字列に結合する方法です。

配列文字列の結合には「Join String Array」ノードを使います。
文字列配列の結合000

こんな感じで使います。
文字列配列の結合002

「Separator」には文字列同士の間にはいる文字列を指定します。
サンプル的にこんな感じで
「Separator」に「*」を指定してノードを組んであげると
文字列配列の結合001

こんな感じで表示されます。
文字列配列の結合003
文字列同士の間に「*」が入っているのが確認できますね。
下の方の文字列は「Separator」に何も指定しない状態の文字列です。

ぱっと、あまり使う機会が思いつかないですが、どこかで使うかもしれませんね。

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

≫ EDIT

UE4 ブループリント(BP)のノードで配列を作成する(Make Array)

ブループリントの変数で配列を作成する方法を前に書きましたが
今回はノードで一時的な配列を作成する方法です。

「Make Array」ノードを使います。
配列の作成002

あとは「ピンを追加」で配列のサイズを変更して
ノードを繋いでいくだけで配列にデータを入れ込むことができます。
こんな感じですね。
配列の作成001
簡単!

「Make Array」ノードは最初型を指定していないので灰色ですが
ノードを繋いであげるとその型に変化します。
配列の作成000

とりあえず配列にデータをつっこむ。というのは結構やると思うので
忘れないようにメモです。

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

| PAGE-SELECT | NEXT