はじめに
バージョンは4.17.0。
UCharacterMovementComponentはUE4でキャラクタを動かすために使用されるコンポーネント。
このコンポーネントを使って最後まで開発しているのだろうか?
それとも独自で作るのだろうか?
ここに関しては方々から色々な声が聞こえてくる。
このコンポーネントだけでできる範囲のものであれば当然これを使っていけば良い。
そうじゃない場合は機能拡張を行うか、新規に自前で作る必要が出てくる。
で、結局どっちが良いのか?
迷うところではある。
とは言っても最初に何かしたら動かす場合にはお世話になるし、
拡張や、使わないしてもまずはできることできないことをちゃんと把握しておく必要がある。
しゃがむとか泳ぐとかあるけど、スプリント(ボタン押しで速く走る)のようなことをしたい場合は独自の対応が必要なる。
UE4のドキュメントを見てみる
API Reference
なんで英語しか無いんだろう...
- Inheritance Hierarchy
UObjectBase UObjectBaseUtility UObject UActorComponent UMovementComponent UNavMovementComponent UPawnMovementComponent UCharacterMovementComponent UArchVisCharMovementComponent
Variables
Functions
Componentのプロパティ
BPで弄れるものを先に説明します。
とりえずGoogle翻訳にまる投げして、怪しいところだけ直してみます。
- Character Movement: Jumping/Falling
型 | 変数名 | 説明 |
---|---|---|
Jump Z Velocity | ジャンプ時のZ方向(上方向)の初速度。 | |
Braking Deceleration Falling | ||
Air Control | 落下時の横移動の制御の値。 0.0でno control、1.0でMaxWalkSpeed。 飛び始めの移動量にも影響があるので0にすると横に移動しなくなる。 |
|
Air Control Boost Multiplier | 下降時には、横速度がAirControlBoostVelocityThresholdより小さい場合、AirControlに乗数が適用されます | |
Air Control Boost Velocity Threshold | 下降時に、横速度の大きさがこの値より小さければ、AirControlにAirControlBoostMultiplierを掛けます。 | |
Falling Lateral Friction | 落下時に横方向の空気の動きに適用する摩擦。 | |
Impart Base Velocity X | trueの場合、落ちるときにベースアクターのX速度を与えます(ジャンプを含む) | |
Impart Base Velocity Y | ||
Impart Base Velocity Z | ||
Impart Base Angular Velocity | trueの場合は、飛び降りる際に角速度の基本コンポーネントの接線成分を与えます。 | |
Notify Apex | ||
Apply Gravity While Jumping | キャラクターが活発にジャンプしている間に重力を適用する(例えば、ジャンプ・キーを保持する) | |
Jump Off Jump ZFactor | JumpZVelocityの割合で、キャラクターのベースにはならないベースアクターの自動的な「ジャンプオフ」が使用されます。 | |
- Character Movement(GeneralSettings)
型 | 変数名 | 説明 |
---|---|---|
Gravity Scale | カスタム重力スケール。 重力にはキャラクタのこの量が掛け合わされます |
|
Max Acceleration | 最大加速度(速度の変化率) | |
Braking Friction Factor | 制動時に使用される摩擦の実際の値を乗算するために使用される係数。 | |
Braking Friction | 制動時に適用される摩擦(抗力)係数(加速度= 0の場合、または文字が最高速度を超える場合)。 使用される実際の値は、これにBrakingFrictionFactorを掛けたものです。 |
|
Use Separate Braking Friction | trueの場合は、BrakingFrictionを使用してキャラクタを停止させます(加速がない場合)。 | |
Crouched Half Height | しゃがみ時の衝突半高さ(コンポーネントスケールが別々に適用される) | |
Mass | Pawnの質量(運動量が与えられたとき)。 | |
Default Land Movement Mode | 水中にないときのデフォルトの移動モード。 プレーヤーの起動時またはテレポート時に使用されます。 |
|
Default Water Movement Mode | ||
Enable Scoped Movement Updates | trueの場合、高レベルの移動の更新は、更新を蓄積し、終了まで大量の作業を延期する移動範囲にラップされます。 | |
Run Physics with No Contoller | trueの場合、キャラクター所有者のコントローラーがなくても移動が実行されます。 | |
Max Simulation Time Step | 各離散シミュレーションステップの最大時間デルタ。 | |
Max Simulation Iterasions | 個別のシミュレーションステップごとに使用される最大反復回数。 | |
Max Depenetration with Geometry | Pawns以外のものから移動するときにシミュレートされたプロキシが通過できる最大距離。 | |
Max Depenetration with Geometry as Proxy | ||
Max Depenetration with Pawn | 他のポーンから外に出たときに突き抜けが許される最大距離。 | |
Max Depenetration with Pawn as Proxy | シミュレートされたプロキシが他のポーンから移動するときに突き抜ける最大距離。 | |
Requested Move Use Acceleration | 後続のパスにアクセラレーションを使用する必要がありますか? trueの場合、追従して目標速度に到達すると加速度が適用されます。 |
|
- Character Movement: Walking
型 | 変数名 | 説明 |
---|---|---|
Max Step Height | 最大の高さのキャラクタがステップアップできる | |
Walkable Floor Angle | キャラクターの歩行可能なサーフェスの最大角度を度で設定します。 WalkableFloorZも計算します。 |
|
Walkable Floor Z | キャラクターの最も急峻な歩行可能面の法線のZ成分を設定します。 | |
Ground Friction | 移動制御に影響する設定。 | |
Max Walk Speed | 歩行時の最大地面速度。落下時の最高横速度も決定します。 | |
Max Walk Speed Crouched | しゃがんで歩いたときの最大地面速度。 | |
Braking Deceleration Walking | 歩行時の減速度、加速時の減速度。 | |
Sweep While Nav Walking | 歩行中にキャラクタが衝突ジオメトリを掃引するかどうか。 | |
Can Walk Off Ledges | trueの場合、キャラクターは出っ張りを離れることができます。 | |
Can Walk Off Ledges when Crouching | ||
Maintain Horizontal Ground Velocity | trueの場合、歩行運動は、上り坂を上昇すると常に水平速度を維持します。 これにより、上り坂が上り坂に平行して速くなります。 |
|
Ignore Base Rotation | キャラクターが立っているベースの回転の変化を無視するかどうか。 | |
Perch Radius Threshold | 接触がカプセルの端に近い場合には、キャラクターが表面の端に止まりぬようにしてください。 | |
Perch Additional Height | 棚に腰掛けているときは、歩行可能な床の上にどれくらいの高さがあるかを判断するときに、この追加の距離をMaxStepHeightに追加します。 | |
Ledge Check Threshold | ポーンがレッジから外れているかどうかを判断する際に使用されます。 | |
Always Check Floor | 歩いている間、固定キャラクターの床のチェックを常に強制するかどうか。 | |
Use Flat Base for Floor Checks | キャラクターが平らな底を持つ形を使用しているかのように床のチェックを行います。 | |
Character Movement: Swimming
Character Movement: Flying
Character Movement: Custom Movement
Character Movement(Rotation Settings)
型 | 変数名 | 説明 |
---|---|---|
Rotation Rate | UseControllerDesiredRotationまたはOrientRotationToMovementがtrueの場合に使用される1秒あたりの回転の変更。 | |
Use Controller Desired Rotation | trueの場合、キャラクタをコントローラの希望する回転(通常はController-> ControlRotation)に向かってスムーズに回転させ、RotationRateを回転の変化率として使用します。 | |
Orient Rotation to Movement | trueの場合、RotationRateを回転の変化率として使用して、Characterを加速方向に回転させます。 | |
関数
- public
関数 | 説明 | ||
---|---|---|---|
virtual | void | AddForce ( FVector Force ) |
キャラクターに力を加える。 (Add force to character.) |
void | AddImpulse | キャラクターにインパルスを加える。 | |
AdjustFloorHeight | 歩行時に床からわずかなオフセットを維持しようと床からの距離を調整します(CurrentFloorに基づいて)。 | ||
ApplyAccumulatedForces | AddImpulse()とAddForce()によって蓄積された運動量を適用し、それらの力をクリアします。 | ||
ApplyDownwardForce | 物理オブジェクトの上を歩いているときに下向きの力を適用します。 | ||
ApplyNetworkMovementMode | |||
ApplyRepulsionForce | タッチされたすべてのコンポーネントに反発力を適用します。 | ||
ApplyRequestedMove | 要求された加速と速度を計算するために、後続の経路によって要求された速度を使用します。 | ||
ApplyRootMotionSource | このルートモーションソースの現在のルートモーションLocalIDにRootMotionSourceを適用します。 | ||
CalcAnimRootMotionVelocity | 動いているroot motionから速度を計算する。 | ||
CalcAvoidanceVelocity | RVO Avoidance. | ||
CalcRootMotionVelocity | TODO:廃止予定です。削除してください。 | ||
CalcVelocity | 摩擦と加速または減速の影響を適用して、現在の状態に基づいて速度と加速度を更新します。 | ||
CanCrouchInCurrentState | キャラクタが現在の状態でしゃがむことが許可されている場合はtrueです。 | ||
CanStepUp | 与えられたFHitResultでactorの上に立つことができるならtrue。 | ||
CanWalkOffLedges | このポーンが現在、棚を離れることができるかどうか。 | ||
CheckFall | ポーンが落下中か確認。 | ||
CheckLedgeDirection | 現在の位置から適切な床のSideStepがある場合はTrueです。 | ||
CheckWaterJump | 泳ぎ状態のpawnがプールの端に突き当たり、飛び降りるかどうかを確認。 | ||
ClearAccumulatedForces | AddImpulse()とAddForce()を介して蓄積された力をクリアし、また起動速度も保留します。 | ||
ClientAckGoodMove | 受信したServerMove()を処理した後にクライアントの調整が必要ない場合、クライアントがSavedMovesから削除できるように適切な移動をしてください | ||
ClientAdjustPosition | タイムスタンプの付いたサーバー移動に関連付けられた、位置補正をクライアントに複製します。 | ||
ClientAdjustRootMotionPosition | 移動にルートモーションを使用する場合は、位置補正をクライアントに複製します。 | ||
ClientAdjustRootMotionSourcePosition | ルートモーションを使用して移動する場合、ルートモーションソース補正をクライアントに複製します。 | ||
ClientVeryShortAdjustPosition | 速度がゼロになったときの帯域節約バージョン。 | ||
ComputeFloorDist | カプセルの底面から床までの距離を計算し、その結果をOutFloorResultに格納します | ||
ComputeOrientToMovementRotation | 現在の動きに基づいて目標回転を計算します。 | ||
ComputePerchResult | GetValidPerchRadius()で指定された半径を持つより小さなカプセルの掃引結果を計算し、InHit.ImpactPointのInMaxFloorDist内で掃引が有効な歩行可能法線に接触する場合はtrueを返します。 | ||
ConstrainAnimRootMotionVelocity | 現在の移動モード(例えば、下降Zが無視される場合)を考慮して、ルート移動速度の成分を適切に設定しないでください。 | ||
ConvertRootMotionServerIDsToLocalIDs | ルートモーショングループの受信したサーバーIDをローカルIDに変換します。 | ||
Crouch | 新しいカプセルサイズが適合するかどうかをチェックし(侵入なし)、成功した場合はCharacterOwner-> OnStartCrouch()を呼び出します。 | ||
DisableMovement() | |||
DisplayDebug | キャンバスに重要な変数を描画する。 | ||
DoJump | ジャンプを行う。 | ||
FindFloor | 指定された場所でカプセルの床を見つけるために垂直方向の掃引を掃引します。 | ||
FindNavFloor | ナビメッシュに位置を投影して、調整された高さを確認します。 | ||
FindWaterLine | 可能な限り水面に近づき、現在と同じ面にとどまります。 | ||
FloorSweepTest | WorldをSweep(掃引)し、最初のブロックヒットを返します。 | ||
ForceReplicationUpdate() | クライアントが長い間更新していないサーバー上に表示させることで、クライアントの更新を強制します。 | ||
GetAirControl | 落下時に使用するエアコントロールを取得します。 | ||
GetAnalogInputModifier() | モディファイア[0..1]は、最後の入力ベクトルの大きさに基づいており、移動中の加速度と最大速度を変更するために使用されます。 | ||
GetBestDirectionOffActor | キャラクターの速度、ベースアクターの大きさなどに基づいてジャンプするように変更することができます。 | ||
GetCharacterOwner() | UpdatedComponentを所有するCharacterを取得します。 | ||
GetCurrentAcceleration() | 現在の加速度。入力ベクトルごとに更新されます。 | ||
GetDeltaRotation | 時間間隔DeltaTimeの間にキャラクタをどのくらい回転させるか。 | ||
GetFallingLateralAcceleration | PhysFallingのヘルパー。 | ||
GetGroundMovementMode() | 現在のGroundMovementMode値を取得します。現在のGroundMovementMode。 | ||
GetImpartedMovementBaseVelocity() | 移動基底を持っている場合は、通常はその基点から飛び出す際に、その基底によって与えられるべき速度を取得します。 | ||
GetLedgeMove | 棚に沿って動く新しいデルタ。 | ||
GetMaxAcceleration() | 現在の状態の最大加速度。 | ||
GetMaxBrakingDeceleration() | 制動時(すなわち、加速がないとき)の現在の最大減速度。 | ||
GetMaxJumpHeight() | JumpZVelocityの速度と重力に基づいて最大ジャンプ高さを計算します。 | ||
GetMaxJumpHeightWithJumpTime() | |||
GetModifiedMaxAcceleration() | TODO:廃止予定です。削除してください。 | ||
GetMovementBase() | Return PrimitiveComponent we are based on (standing and walking on).私たちが基づいているPrimitiveComponentを返します(立って歩いています)。 | ||
GetMovementName() | MovementModeの文字列 | ||
GetNetworkSafeRandomAngleDegrees() | クライアントとサーバーの間でほぼ等しい角度でランダムな角度を生成します。 | ||
GetPerchRadiusThreshold() | キャラクターがサーフェスの端に止まりそうにない、カプセルの端からの距離。 | ||
GetPredictionData_Client_Character() | |||
GetPredictionData_Server_Character() | |||
GetRootMotionSource | 現在のルートモーションから名前でRootMotionSourceを取得します。 | ||
GetRootMotionSourceByID | 現在のルートモーションからRootMotionSourceをIDで取得します。 | ||
GetServerLastTransformUpdateTimeStamp() | ServerLastTransformUpdateTimeStampの値を取得します。 | ||
GetSimulationTimeStep | 残りの時間と現在の反復を考慮して残りの時間ステップを計算します。 | ||
GetValidPerchRadius() | 落ちることなくサーフェスの端に立つことができる半径を返します(ウォーキング可能なサーフェスの場合)。 | ||
GetWalkableFloorAngle() | キャラクターの歩行可能なサーフェスの最大角度を度で取得します。 | ||
GetWalkableFloorZ() | キャラクターのための最も急な歩行可能な表面の法線のZ成分を取得します。 | ||
HandlePendingLaunch() | 更新中に保留中の起動を処理します。起動がトリガーされた場合はtrueを返します。 | ||
HasAnimRootMotion() | PerformMovement()物理で使用するアニメーションのルートモーションがある場合はTrueです。 | ||
HasRootMotionSources() | PerformMovement()物理で使用する任意のソースからルートモーションがある場合はTrueです。 | ||
HasValidData() | 有効なCharacterOwnerとUpdatedComponentがある場合はtrueを返します。 | ||
ImmersionDepth() | キャラクターがどのくらい深く水に浸されているかを判断する。 | ||
IsMovementInProgress() | 現在、動きの更新を行っている場合はTrueです。 | ||
IsValidLandingSpot | 提供されたヒット結果が落下時に有効な着陸地点であることを確認します。 | ||
IsWalkable | ヒットした結果をキャラクターのウォーキング可能なサーフェスとみなす必要がある場合はtrueを返します。 | ||
IsWalking() | |||
IsWithinEdgeTolerance | Return true if the 2D distance to the impact point is inside the edge tolerance (CapsuleRadius minus a small rejection threshold).インパクトポイントまでの2D距離がエッジ許容値内にある場合はtrueを返します(CapsuleRadiusから小さな拒否しきい値を引いた値)。 | ||
JumpOff | このポーンを強制的に現在の基地から跳ね返させる。これは受け入れられない。 | ||
JumpOutOfWater | 水から海岸に飛ぶ。 | ||
Launch | Queue a pending launch with velocity LaunchVel.速度LaunchVelで待機中の発射を待つ。 | ||
MaybeSaveBaseLocation() | 更新を延期しない場合は、SaveBaseLocation()を呼び出します(bDeferUpdateBasedMovementがfalse)。 | ||
MaybeUpdateBasedMovement | ベースの移動に基づいて位置の更新を更新または遅らせる。 | ||
MoveSmooth | 現在の移動モード(通常はシミュレートされたプロキシによって使用される)に基づく単純な移動ルールを使用して、指定された移動方向に沿って移動します。 | ||
NewFallVelocity | 与えられた速度と重力から新しい落下速度を計算する。 | ||
NotifyJumpApex() | bNotifyApexがtrueでキャラクターがジャンプの頂点を通過したときに呼び出されます。 | ||
OnRootMotionSourceBeingApplied | Called during ApplyRootMotionSource call, useful for project-specific alerts for "something is about to be altering our movement".ApplyRootMotionSource呼び出し中に呼び出され、「何かが動きを変えようとしている」というプロジェクト固有の警告に便利です。 | ||
PackNetworkMovementMode() | |||
PerformAirControl | TODO: deprecated, remove. | ||
PerformAirControlForPathFollowing | Update Velocity and Acceleration to air control in the desired Direction for character using path following.パスを使用しているキャラクタの目的の方向で、速度と加速度を空気制御に更新します。 | ||
PhysFalling | 落ちる動きを扱います | ||
PhysicsRotation | deltaTimeで回転を実行する | ||
PostPhysicsTickComponent | フィジックス(同期シーン)後に呼び出されるTick関数は、布の前にシミュレーションを終了しました | ||
PostProcessAvoidanceVelocity | bUseRVOPostProcessが設定されたときに呼び出される修正回避速度を可能にする | ||
RemoveRootMotionSource | RootMotionSourceを現在のルートモーションから名前で削除します。 | ||
RemoveRootMotionSourceByID | 現在のルートモーションからRootMotionSourceをIDで削除します。 | ||
RoundAcceleration | Round acceleration, for better consistency and lower bandwidth in networked games.ネットワーク化されたゲームの一貫性と低帯域幅のためのラウンドアクセラレーション | ||
SaveBaseLocation() | Update OldBaseLocation and OldBaseQuat if there is a valid movement base, and store the relative location/rotation if necessary.有効な移動ベースがある場合はOldBaseLocationとOldBaseQuatを更新し、必要に応じて相対位置/回転を保存します。 | ||
ServerMove | Network RPCs for movement.移動のためのネットワークRPC。 | ||
ServerMoveDual | Replicated function sent by client to server - contains client movement and view info for two moves.クライアントからサーバに送信された複製された機能 - クライアントの動きと2つの動きのビュー情報が含まれています。 | ||
ServerMoveDualHybridRootMotion | Replicated function sent by client to server - contains client movement and view info for two moves.クライアントからサーバーに送信された複製された機能 - クライアントの動きと2つの動きのビュー情報が含まれます。 | ||
ServerMoveOld | Resending an (important) old move. Process it if not already processed.(重要な)古い動きを再送する。まだ処理されていない場合は処理してください。 | ||
SetAvoidanceEnabled | Change avoidance state and registers in RVO manager if needed.回避状況を変更し、必要に応じてRVOマネージャに登録します。 | ||
SetAvoidanceGroup | |||
SetAvoidanceGroupMask | |||
SetAvoidanceVelocityLock | |||
SetBase | Update the base of the character, which is the PrimitiveComponent we are standing on.キャラクタのbaseを更新します。これは、現在立っているPrimitiveComponentです。 | ||
SetBaseFromFloor | Update the base of the character, using the given floor result if it is walkable, or null if not.指定された床の結果が歩行可能な場合はそれを使用してキャラクタの底辺を更新し、そうでない場合はnullを更新します。 | ||
SetDefaultMovementMode() | Set movement mode to the default based on the current physics volume.現在の物理ボリュームに基づいて移動モードをデフォルトに設定します。 | ||
SetGroundMovementMode | Set movement mode to use when returning to walking movement (either MOVE_Walking or MOVE_NavWalking).歩行動作に戻るときに使用する移動モードを設定します(MOVE_WalkingまたはMOVE_NavWalking)。 | ||
SetGroupsToAvoid | |||
SetGroupsToAvoidMask | |||
SetGroupsToIgnore | |||
SetGroupsToIgnoreMask | |||
SetMovementMode | 移動モードを変更します。 | ||
SetWalkableFloorAngle | キャラクターの歩行可能なサーフェスの最大角度を度で設定します。 WalkableFloorZも計算します。 | ||
SetWalkableFloorZ | キャラクタの最も急峻な歩行可能面の法線のZ成分を設定します。 | ||
ShouldCatchAir | 歩行時および歩行時にキャラクタが下降モードに入るかどうかは、古いフロア結果と新しいフロア結果(両方とも歩行可能とみなされます)に基づいていますか。 | ||
ShouldCheckForValidLandingSpot | 有効な着陸地点を見つけようとするかどうかを判断する(ヒット結果に基づいて)。 | ||
ShouldComputePerchResult | Check if the result of a sweep test (passed in InHit) might be a valid location to perch, in which case we should use ComputePerchResult to validate the location.掃引テストの結果(InHitで渡された)が有効な場所であるかどうかを確認します。この場合、ComputePerchResultを使用して場所を検証する必要があります。 | ||
ShouldJumpOutOfWater | Calculates the best direction to go to "jump off" an actor.アクターを「飛び降りる」ための最良の方向を計算します。 | ||
SimulateRootMotion | Simulate Root Motion physics on Simulated Proxies.シミュレートされたプロキシのルートモーション物理をシミュレートします。 | ||
StartFalling | 歩行から落下への移行。 | ||
StartNewPhysics | MovementModeに基づいて物理を変更します。 | ||
StartSwimming | Handle start swimming functionality.スタートスイミング機能を処理します。 | ||
StepUp | Move up steps or slope.ステップまたは斜面を上に移動します。 | ||
Swim | Swimming uses gravity - but scaled by (1.f - buoyancy).水泳は重力を使用しますが、(1.f - 浮力) | ||
UnCrouch | Checks if default capsule size fits (no encroachment), and trigger OnEndCrouch() on the owner if successful.デフォルトのカプセルサイズが適合するかどうか(侵入なし)をチェックし、成功した場合はオーナーのOnEndCrouch()をトリガーします。 | ||
UnpackNetworkMovementMode | |||
UpdateBasedMovement | Update position based on Base movement.ベースの移動に基づいて位置を更新する | ||
UpdateBasedRotation | Update controller's view rotation as pawn's base rotates.ポーンベースの回転に合わせてコントローラのビュー回転を更新します。 | ||
UpdateCharacterStateAfterMovement() | Update the character state in PerformMovement after the position change.位置の変更後、PerformMovementのキャラクタの状態を更新します。 | ||
UpdateCharacterStateBeforeMovement() | Update the character state in PerformMovement right before doing the actual position change.実際の位置変更を行う前に、PerformMovementのキャラクタ状態を更新してください。 | ||
UpdateFloorFromAdjustment() | React to instantaneous change in position.位置の瞬間的な変化に反応する。 | ||
VerifyClientTimeStamp | On the Server, verify that an incoming client TimeStamp is valid and has not yet expired.サーバーで、着信クライアントのTimeStampが有効であり、まだ有効期限が切れていないことを確認します。 | ||
VisualizeMovement() | Draw in-world debug information for character movement (called with p.VisualizeMovement > 0).キャラクタ移動のためのインワールドデバッグ情報を描画します(p.VisualizeMovement> 0で呼び出されます)。 | ||