fc2ブログ

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

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

2016年06月 | ARCHIVE-SELECT | 2016年08月

| PAGE-SELECT |

≫ EDIT

UE4 カメラ情報の取得(Get Player Camera Manager、Get Camera Location、Get Camera Rotation、Get FOVAngle)

現在のカメラの情報を取得する方法です。

今回は「Get Player Camera Manager」というノードを使って
「Player Camera Manager」を取得して、カメラのパラメータを取得していきます。

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

・カメラ
https://docs.unrealengine.com/latest/JPN/Gameplay/Framework/Camera/index.html

それと、こちらのサイトも参考にさせていただきました。

・UE4 + Oculus Riftで、カメラのワールド座標を取得する方法
http://pafuhana1213.hatenablog.com/entry/2015/07/31/010101

まずはカメラの位置を取得するため「Get Camera Location」ノードを使います。
カメラ情報000
「Player Camera Manager」からつなぐだけですね。

次に回転を取得するため「Get Camera Rotation」ノードを使います。
カメラ情報001
こちらも Location と同じです。

最後に、画角(FOV)を「Get FOVAngle」ノードを使って取得します。
カメラ情報002

と、こんな感じでカメラの情報を取得できました。
なにか他に方法がありそう(自分で作った場合など)なのでそれはまた別の機会にでも。

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

≫ EDIT

UE4 アクターの回転を取得したりセットしたり(Get Actor Rotation、Set Actor Rotation、Set Actor Location And Rotation)

Actor(アクター)の回転を取得したり、回転をセットしたりする方法です。
注意することはいくつかありますが、素直にノードをつなぐだけでできます。

回転を取得するには「Get Actor Rotation」ノードを使います。
アクター回転関係000
「Rotator」型で取得することができます。

回転をセットするのは「Set Actor Rotation」ノードを使います。
アクター回転関係001
これもセットする回転を入力するだけですね。

公式ドキュメントはこちらに。これも英語しかない…。

・SetActorRotation
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Utilities/Transformation/SetActorRotation/index.html

それと、位置のセットと回転のセット両方を同時に行う「Set Actor Location And Rotation」
というノードもあります。
アクター位置関係002
キャラクターの位置や回転をリセットしたい場合などは
同時に行えるのでこっちを使うほうがよさそうですね。

それと、上記 Set 系の関数ですが、「Capsule Component」や「Transform」の
詳細設定の「Mobility(可動性)」が「Static(スタティック)」になっている場合は
処理が効かないので注意しましょう。
「Movable(ムーバブル)」に設定することで、ノードの処理が有効になります。
アクター位置関係003

移動と同じく Set 系の部分だけひとつ注意点がある感じですね。

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

≫ EDIT

UE4 アクターの位置を取得したりセットしたり(Get Actor Location、Set Actor Location、Set Actor Location And Rotation)

Actor(アクター)の位置を取得したり、位置をセットしたりする方法です。
注意することはいくつかありますが、素直にノードをつなぐだけでできます。

位置を取得するには「Get Actor Location」ノードを使います。
アクター位置関係000
「Vector」型で取得することができます。
Position ではなく Location なんですね。ここらへん用語は覚えないとですね。

位置をセットするのは「Set Actor Location」ノードを使います。
アクター位置関係001
これはセットする位置を入力するだけと思いきや、二つほどオプションがあります。

・Sweep

目的地までスイープするか否か。スイープする場合は、目的地までの過程でオーバーラップをトリガーし、何かにブロックされたら目的地の前で止まります。ルートコンポーネントだけがスイープされ、ブロックコリジョンについてはチェックされます。子コンポーネントはスイープなしで移動します。コリジョンがオフの場合は無効です。

と、ポップアップヘルプには書かれています。
あたり判定を持つアクターで、位置の「セット」ではなく「移動」として使う場合に、
コリジョン同士のあたり判定をするための処理。という感じでしょうか。
ちょっと自信ないですが…。
「Sweep Hit Result」で当たった結果の詳細がとれるようです。が、これはまた別途どこかで。

・Teleport

物理ステートをテレポートするか否か(物理コリジョンがこのオブジェクトのために有効になっている場合)。true の場合は、このオブジェクトの物理ベロシティは変更されません。(したがって、ラグドール部分は、位置の変化によって影響を受けません。) false の場合は、位置の変化に基いて物理ベロシティが更新されます(ラグドールの部分は影響を受けます)。CCD が有効でテレポートしていない場合は、スイープボリューム全体に沿ってオブジェクトに影響を与えます。

と、ポップアップヘルプには書かれています。
これにチェックをいれる場合はワープ(瞬間移動)的な処理になるということですね。
チェックがない場合は高速移動になるといったものになります。
高速移動にしてしまうと、物理挙動で髪やマントがなびく処理が入っていた場合などに、
もとにいた位置からの移動になるのでそっちに引っ張られてしまうところが見えて移動してしまう。
とかですね。
コリジョンにぶつかってほしい(Sweepにチェック)以外はチェックを入れてワープさせるのがよさそうですね。

ドキュメントはこちらに。英語しかなかった…。

・SetActorLocation
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Utilities/Transformation/SetActorLocation/index.html

Sweep についてはこちらの記事とかが実践で使っているので参考になるかもです。

・インベーダーゲームを作る その5弾と当たり判定
http://unrealengine-blog.hatenablog.com/entry/2014/04/29/015733

それと、位置のセットと回転のセット両方を同時に行う「Set Actor Location And Rotation」
というノードもあります。
アクター位置関係002
移動ではなく、キャラクターの位置や回転をリセットしたい場合などは
同時に行えるのでこっちを使うほうがよさそうですね。

それと、上記 Set 系の関数ですが、「Capsule Component」や「Transform」の
詳細設定の「Mobility(可動性)」が「Static(スタティック)」になっている場合は
処理が効かないので注意しましょう。
「Movable(ムーバブル)」に設定することで、ノードの処理が有効になります。
アクター位置関係003

Set 系の部分だけいくつか注意点がある感じですね。

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

| PAGE-SELECT |