UE4移动-MaintainHorizontalGroundVelocity

bMaintainHorizontalGroundVelocity:

  • true, 则直接丢弃竖直方向速度, 使用水平方向速度. 速度变小了
  • false, 则速度大小不变, 但是竖直方向速度设置为0. 即将竖直方向的速度转移到水平方向, 速度大小不变, 方向发生了变化(竖直方向被丢弃了).

定义:

1
2
3
4
5
6
/**
* If true, walking movement always maintains horizontal velocity when moving up ramps, which causes movement up ramps to be faster parallel to the ramp surface.
* If false, then walking movement maintains velocity magnitude parallel to the ramp surface.
*/
UPROPERTY(Category="Character Movement: Walking", EditAnywhere, BlueprintReadWrite)
uint8 bMaintainHorizontalGroundVelocity:1;

使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void UCharacterMovementComponent::MaintainHorizontalGroundVelocity()
{
if (Velocity.Z != 0.f)
{
if (bMaintainHorizontalGroundVelocity)
{
// Ramp movement already maintained the velocity, so we just want to remove the vertical component.
Velocity.Z = 0.f;
}
else
{
// Rescale velocity to be horizontal but maintain magnitude of last update.
Velocity = Velocity.GetSafeNormal2D() * Velocity.Size();
}
}
}

从代码上很容易看出, bMaintainHorizontalGroundVelocity表示:是否保持水平速度. 当开启bMaintainHorizontalGroundVelocity时, 直接丢弃z轴方向速度, 保持水平方向速度. 当关闭bMaintainHorizontalGroundVelocity时, 速度大小不变, 但是将竖直方向速度转移到水平方向上, 并且速度的水平方向保持不变, 数值方向为0.

注意: 无论是否开启bMaintainHorizontalGroundVelocity, 竖直方向速度都会被清零, 并且速度方向并不是沿着某个表面的, 而是与xy平面平行的.