Nightゲームプログラム系の覚え書きこの広告は、90日以上更新していないブログに表示しています。使うUnrealEngine4FloatingPawnMovementとは、UE4が用意している移動を担うComponentの一つです。CharacterMovementのように状態(歩き、ジャンプ、しゃがみ)があるわけでもなく、設定したパラメータ通りに位置を変化させるだけのシンプルな実装のMovementComponentです。シンプルですが2Dゲームで使うには十分な機能を持っており、自分のゲームでの移動はFloatingPawnMovementをメインに使っています。移動させる移動させる時は、AddInputVectorノードを使います。FloatingPawnMovementは、移動させたい方向のベクトルを与えることで移動します。0.0)方向ベクトルの長さは「0.0~1.0」です。1.0以上与えても1.0として扱われます。この長さは、次に説明する速度パラメータのスケール値として働きます。AddInputVectorは呼ぶ度に方向ベクトルが加算されて行きます。FloatingPawnMovementのTickが呼ばれるまでの加算結果を用いて移動処理が実行されます。これを利用することで、Pawnの外部からの影響を受ける特殊な移動処理を簡単に実現することもできます。2016青いエフェクトが出ている間、通常の移動処理に加えて、中央に移動する方向ベクトルをAddInputVectorすることで実現しています。速度パラメータMovementComponentでの移動は、与えたベクトル方向に加速していき、最大の速さに到達したら速さアップを止めます。ベクトルの入力が無くなったら減速します。移動の調整は、それらのパラメータをいじることで行います。方向転換した際の追加加速スケール単位は、unit/secです。TurningBoostは、どれだけ素早く方向転換できるか、ということを示すパラメータです。TurningBoostの値が大きいほど素早く方向転換が行われ、小さいほどゆっくり方向転換します。動作としては、方向転換する時だけ、加速度がTurningBoost倍されます。デフォルトの値では、加速も減速も方向転換も、かなり素早く行う設定となっています。そのため、すぐに最大の速さになりますし、ピタっと静止できるし、瞬間的に方向転換します。慣性のある移動(滑りながら移動)速度パラメータ設定の応用として、慣性のつく設定を紹介します。以下のように、最大の速さ以外のパラメータの値を大きく下げ、また加速より減速の値を低くします。すると次の動画のようになります。youtu.be移動制限パラメータ移動する平面を指定することができます。指定した平面以外へは動かなくなります。詳細パネルのPlanarMovementで設定します。図の設定だと、移動がXY平面のみとなりZ方向には動かなくなります。する平面の法線軸を指定。移動制限平面の法線ベクトルの原点ただし、Pawnに直接Locationを入れれば(AddWorldLocationなど)、動かない方向にも動きます。FloatingPawnMovementによる移動が制限される設定となります。NavigationFloatingPawnMovementは、Navigation移動に対応しています。AIControllerを持つPawnに持たせれば、MoveTo系ノードを使うことで、今まで紹介したパラメータに従ってNavigationします。注意点FloatingPawnMovementは、AddInputVectorでベクトルが追加されなかった場合に減速する仕組み上、前フレームとの位置差分を速度ベクトルに変換する処理が入っています。そのため、直接Locationを入れて動かすことと併用している場合、想定してない移動になることがまれにあります。自分の場合は、移動制限せずに、描画順制御のためにZ方向の移動だけはSetWorldLocationで行っていた所、Z方向に速度が発生してしまいました。描画順がおかしくなったり、衝突するはずのコリジョンが当たらなくなったりしていました。マチネでデモまずは、こちらをご覧下さい。ツイートリンクWerk宣伝はてなブログをはじめよう!katze_7514さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。