凛(kagring)のUE4とUnityとQt勉強中ブログ

2016 年から UE4 を触り始めました。勉強したもののメモ用のブログです。C++ での Qt、Unity も少しあります。

| PAGE-SELECT | NEXT

≫ EDIT

UE4 マウスの移動量の取得(Event Input Axis Turn、Event Input Axis LookUp)

マウスの移動量を取得して処理する方法です。
マウスの座標を毎フレーム受け取って差分で処理をするという方法もあるかなと思ったのですが
UE4にマウスを乗っ取られている状態だと
座標の取得がうまくいかないことがわかりました。

なので、これをどうするか調べていたところ、以下のようなドキュメントが。

・ブループリントで入力をセットアップする操作手順
https://docs.unrealengine.com/latest/JPN/Gameplay/HowTo/SetUpInput/Blueprints/index.html

「Input Axis Turn」と「Input Axis LookUp」というイベントが使えそうでした。

「Input Axis Turn」はマウスの横の移動量を取得できます。
マウスの移動量取得000
「Axis Value」で移動量が取得できます。
いい感じに扱うために任意の値を掛けて使うのがよさそうです。

「Input Axis LookUp」はマウスの縦の移動量を取得できます。
マウスの移動量取得001
「Axis Value」で移動量が取得できます。
いい感じに扱うために任意の値を掛けて使うのがよさそうです。

といった感じですね。
自作のカメラをマウスで操作したくて調べていたのですが
上記イベントを使って無事実装することができました!
スポンサーサイト

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

≫ EDIT

UE4 マウスやキーボードを押している間の判定をとる

マウスやキーボードの入力を受け取るとき、こういったノードを使うことになると思います。
マウス押しっぱなし取得002

これ「押した瞬間」と「離した瞬間」はとれるのですが
「押しっぱなしの時の状態」はとれないんですよね…。
みんな必要になりそうな処理だと思うのですが実は標準機能ではないという…。

と、調べてみたらこんな記事がありました。

・UE4 BluePrintメモ その1
http://pafuhana1213.hatenablog.com/entry/2014/09/09/004928

上記サイトによるとこの二種類の方法が良いみたいですね。

RetriggerableDelayノードのDurationの値でボタン押しっぱなし時の
処理(↑の場合だとFireImpulse)の呼び出し時間間隔を調整

フラグで管理版。Tickを使用するので、ボタン押しっぱなし時の処理は
毎フレーム呼ばれることになる

UE4のANSWER HUBでもこういった投稿があるようです。

・Mouse left button down to shoot automatically
https://answers.unrealengine.com/questions/31437/mouse-left-button-down-to-shoot-automatically.html

個人的には変数を増やさないといけないのですが
BOOL値の変数による管理が一番楽かなーと。
マウス押しっぱなし取得000
変数を増やして
マウス押しっぱなし取得001
押したときと話した時でこの変数を管理する。
といったものですね。

一応現状でも上記の扱いでできたりするのですが
折角ノードがあるのでHoldもとれるようにしてくれないかなーと願ってます!

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

≫ EDIT

UE4 サウンドキュー(Audio Component)が再生中かどうかチェックする(Is Playing)

サウンドキューが再生中かどうかチェックする方法です。
公式ドキュメントはこちらに。

・Ambient Sound アクタのユーザーガイド
https://docs.unrealengine.com/latest/JPN/Engine/Audio/SoundActors/index.html

再生中かどうかを判断するには「Is Playing」ノードを使います。
再生中かどうか001
「Target」には「Audio Component」を指定します。

実際にノードを組むとこんな感じになります。
再生中かどうか000

UE4は機能がたくさん用意されてて簡単でいいですよね。

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

≫ EDIT

UE4 テクスチャストリーミングの機能をオフにして低い解像度のテクスチャが一瞬表示されないようにする(Never Stream)

UE4ではテクスチャストリーミングという徐々にテクスチャを読み込みながら表示をしていく
ロード時間やメモリに優しい機能があります。

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

・テクスチャ ストリーミングの概要
https://docs.unrealengine.com/latest/JPN/Engine/Content/Types/Textures/Streaming/Overview/index.html

その際、低解像度のテクスチャから読み込んでいき表示されるので
一瞬だけ低解像度のテクスチャが表示されてしまうことがあります。
これを解消する方法です。

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

● Never Stream
ONにするとテクスチャストリーミングをしません。
ゲーム実行中にテクスチャを読み込むのがテクスチャストリーミングで、ロードを速くする代わりにテクスチャが粗い状態から徐々に綺麗になるアレです。綺麗なテクスチャを後から読んでいる訳です。
しかしエフェクトは突発的に出る上に画面近くで粗いテクスチャが表示されると困りますよね。なのでNever Streamに設定するとストリームせず最適なMipレベルのテクスチャが表示されます。これはつまり全てのMipレベルを事前にロードするということであり、そもそも旧来の方法でもあります。


テクスチャのプロパティ画面はこんなかんじになります。
テクスチャストリーミング000
この詳細の中にある「Never Stream」という項目にチェックをいれることで
テクスチャストリーミングの機能をオフにすることができます。
テクスチャストリーミング001
簡単ですね。

ちなみに上記テクスチャがそうなのですが

テクスチャ ストリーミング システム、すなわちストリーマーはアンリアル エンジンの一部であり、各テクスチャの解像度を高くしたり、低くしたりします。これにより、利用可能なメモリを効率的に管理しながら 視覚的クオリティを適切に保ちます。この一部はミップすなわちミップマップで行われます。ミップはご利用のテクスチャ解像度に対して事前計算された画像のシーケンスです。テクスチャの LOD (Level of Detail) のようなものと考えることができます。 ミップの詳細については、 テクスチャのサポートと設定 のページをご覧ください。

といった「ミップマップで行われます」とあるので
ミップマップを持たないテクスチャだと「Never Stream」のチェック状態は変更できないようになっているようです。

どうしても見せたいエフェクトなどがない限りはチェックを入れなくてもいい気はしますが
ロード時間やメモリが間に合うのであればチェック入れてもよいかもですね。

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

≫ EDIT

UE4 サウンドキュー(Audio Component)の音量を変更する(Adjust Volume)

サウンドキューの音量を変更する方法です。
公式ドキュメントはこちらに。

・Ambient Sound アクタのユーザーガイド
https://docs.unrealengine.com/latest/JPN/Engine/Audio/SoundActors/index.html

音量を変更する「Adjust Volume」ノードを使います。
サウンドキュー音量変更001
「Target」には「Audio Component」を指定します。
「Adjust Volume Duration」には音量の変更が終了するまでの時間を秒で指定します。
「Adjust Volume Level」は変更する音量を指定します。1.0で通常の音量。0.0で無音となります。

実際にノードを組むとこんな感じになります。
サウンドキュー音量変更000

音量の変更は結構頻繁に使うと思うのでよさそうですね。
とはいえこのノードでいいのかはちょっと不安だったりします。

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

| PAGE-SELECT | NEXT