移动模式

基本信息

属性 值
所属配置类 MovementConfig
字段 public static MovementMode movementMode
类型 枚举 MovementConfig.MovementMode
默认值 CREATIVE(@Config.DefaultEnum("CREATIVE"))
服务端同步 ❌ 无 @Config.Sync
配置分类 category = "movement"
配置注释 Movement mode: STATIC (instant stop) or CREATIVE (momentum/drift)

取值穷举

取值 实现方法 速度系数 积分方式
STATIC tickDefaultMovement × DEFAULT_SPEED_SCALE = 0.5 无积分,本 tick 位移 = 方向向量 × 速度,松键立即停住
CREATIVE tickCreativeMovement × CREATIVE_SPEED_SCALE = 2.0 速度向目标逼近 + 摩擦衰减,松键滑行一段后停住

STATIC

先算方向向量(前进用 -sin(yaw), cos(yaw),平移用 cos(yaw), sin(yaw), 前进+平移同时进行时水平分量乘 DIAGONAL_FACTOR = sin(45°) 归一化,垂直方向 up != down 决定 ±1), 然后直接 cameraEntity.moveEntity(dx * speed, dy * speed, dz * speed)。无速度状态变量。

CREATIVE

额外维护三个字段 velocityX/Y/Z,每 tick 三步:

  1. 用与 STATIC 相同的规则算出目标速度 targetX/Y/Z(已乘 speed);
  2. 逼近:velocityX += (targetX - velocityX) * CREATIVE_ACCELERATION,三个轴各一次,CREATIVE_ACCELERATION = 0.15;
  3. 摩擦:velocityX *= CREATIVE_FRICTION,三个轴各一次,CREATIVE_FRICTION = 0.6;
  4. 死区:绝对值 < 0.001 的轴直接置 0;
  5. cameraEntity.moveEntity(velocityX, velocityY, velocityZ)。

速度状态在每次 enable()、enableTripod()、switchTripod() 时被清零,因此换机位不会带上残余动量。

两种模式的实际差异

场景 STATIC CREATIVE
相同 移动速度 下的有效速度 0.5 × 基值 2.0 × 基值(4 倍)
起步手感 立即到位 有约 0.15 的响应延迟,逐渐加速
松键 立即停止 逐 tick × 0.6 衰减,低于 0.001 归零
转向 立即响应 转向时旧速度造成惯性漂移

生效条件

该分支在 tick() 中读取,且位于 playerControlled 早退之后: 开启 玩家控制 时 tick() 会在第 6 步直接返回, 两种模式都不会被求值。

其它配置项

MovementConfig 共 2 项:

字段 类型 默认值 服务端同步
speed float(0.2 ~ 10.0) 1.0f ❌
movementMode MovementMode CREATIVE ❌

相关条目