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

「Vector」型で取得することができます。
Position ではなく Location なんですね。ここらへん用語は覚えないとですね。
位置をセットするのは「Set Actor Location」ノードを使います。

これはセットする位置を入力するだけと思いきや、二つほどオプションがあります。
・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」
というノードもあります。

移動ではなく、キャラクターの位置や回転をリセットしたい場合などは
同時に行えるのでこっちを使うほうがよさそうですね。
それと、上記 Set 系の関数ですが、「Capsule Component」や「Transform」の
詳細設定の「Mobility(可動性)」が「Static(スタティック)」になっている場合は
処理が効かないので注意しましょう。
「Movable(ムーバブル)」に設定することで、ノードの処理が有効になります。

Set 系の部分だけいくつか注意点がある感じですね。
| UE4 | 13:01 | comments:0 | trackbacks:0 | TOP↑