跳到主要内容

转向与跟随

「跟得紧、转得顺、不会卡住」是时装插件最难做好的部分,也是云时装投入最多打磨的地方。 本页说明云时装如何让模型跟着玩家走、跟着玩家转,以及你可以如何调整。

深度优化过的跟随系统

云时装的跟随不是简单的「每隔几 tick 传送一次模型」:

  • 模型位置与朝向每 tick 同步,搭配 1 tick 客户端插值,快速移动也不拖影;
  • BODY 模式使用客户端虚拟乘客,由客户端直接把时装绑在玩家身上,零延迟;
  • 内置三重自我修复,模型停摆、冻结、脱节都会自动重建;
  • 转向提供硬连接、原生身体、自适应平滑三种模式,并带死区防抖与大角度瞬间对齐。

两个开关:谁决定朝向​

设置位置作用
follow-rotation每件时装要不要跟着玩家转
rotation.modeconfig.yml(全局)怎么跟着玩家转

follow-rotation​

follow-rotation: true
值行为适合
true(默认)时装随玩家朝向旋转翅膀、披风、背饰、贴身装甲
false只跟随位置,朝向保持不变环绕玩家飞行的龙、宠物、自带环绕动画的法器
备注

模型自己带有环绕 / 位移动画时,务必设为 false,否则动画的轨道会跟着玩家视角一起转,看起来会乱飞。

转向模式 rotation.mode​

config.yml
rotation:
mode: rigid
模式朝向来源手感推荐
rigid(默认)玩家视角朝向像焊在玩家身上,视角一转立即同步翅膀、贴身背饰
native-bodyMinecraft 原生身体朝向与原版身体一样,转头时身体会有零点几秒的自然延迟追求原版角色感
smooth视角朝向 + 自适应平滑柔和追踪,小动作不抖、大回头迅速跟上大型模型、展示型时装
  • 三种模式都作用于 meg 时装。
  • display 与 body 使用 rigid(视角朝向)或 native-body(身体朝向)作为朝向来源;smooth 的平滑追踪仅作用于 meg。
  • equipment 由原版骨架渲染,永远与玩家本人完全一致,不受此设置影响。

smooth 自适应参数​

smooth 并不是固定速度的插值,而是按「与目标朝向相差多少」分段调整追踪速度:

config.yml
rotation:
mode: smooth
adaptive:
dead-zone: 0.35 # 小于此角度(度)不更新,过滤鼠标微抖
small-angle-speed: 0.42 # 小角度:柔和
medium-angle-speed: 0.68 # 中角度:加快
large-angle-speed: 0.88 # 大角度:高速追上
medium-angle: 10.0 # 超过此角度使用中速
large-angle: 40.0 # 超过此角度使用高速
snap-angle: 120.0 # 超过此角度直接对齐,避免快速回头时模型拖在身后
角度差 0° ─ 0.35° ── 10° ──────── 40° ──────── 120° ────→
行为 不动 │ 柔和 0.42 │ 加快 0.68 │ 高速 0.88 │ 瞬间对齐

速度值范围 0.05 – 1.0,越大越贴近玩家,1.0 等同立即转向。

想要的手感调整方向
更柔、更有「飘」的感觉降低三个 speed,例如 0.30 / 0.50 / 0.75
更紧、几乎没延迟提高 speed,或直接改用 rigid
静止时模型轻微抖动提高 dead-zone,例如 0.6
快速甩头时模型落后降低 snap-angle,例如 90

body-smoothing / head-smoothing 为旧版保留的兼容参数,新配置以 adaptive 为准。

位置偏移 offset​

offset:
x: 0.0 # 左右:正数往右
y: 0.0 # 上下:正数往上
z: 0.25 # 前后:正数往背后,负数往前

x 与 z 是以玩家朝向为基准的本地坐标,不是世界坐标:无论玩家面向哪个方向,z: 0.25 都表示「往玩家背后 0.25 格」。

从 2.10.4 以前升级到 2.10.5

2.10.5 修正了 meg 时装偏移方向相反的问题。如果你以前为了抵消反向,把 MEG 时装的 offset 调成反的(例如用负数的 y 往上抬),升级后请把 X / Y / Z 的正负号反过来。display 与 body 类型不受影响。

微调建议

以 0.05 为单位调整,每次改完 /cosmetic reload 立即生效,不需要重进服务器。 第一人称与第三人称(F5)都看一遍,并请另一位玩家从旁观察。

BODY 模式还会先套用锚点的基础位置,offset 在锚点之上继续微调。

各模式的跟随机制​

模式跟随方式说明
meg挂载 + 逐 tick 同步模型挂载在玩家身上,每 tick 同步位置、身体与头部朝向
display逐 tick 传送 + 插值每 tick 计算带偏移的位置,启用 1 tick 客户端插值
equipment原版骨架由客户端原生渲染,与玩家动作完全一致
body客户端虚拟乘客 + 逐 tick 位置同步通过 packetevents 让客户端直接把展示实体绑在玩家身上,移动时每 tick 同步位置(2.10.5 起);数据包失败时仍能保持跟随

三重自我修复​

真实服务器里,传送、跨世界、其他插件改写数据包、客户端丢包,都可能让模型「卡在原地」。云时装会持续检测并自动重建,玩家不需要重新穿戴:

检测触发条件处理
动画停摆模型运算停止约 3 秒自动重建
骨骼冻结(follow-watchdog)玩家在移动但模型几乎没动,连续多次自动重建(有冷却)
位置脱节模型根骨骼与玩家位置持续不一致(2.10.1 起已计入 offset 距离,较大偏移不会被误判)自动重建
挂载丢失每 5 秒刷新一次挂载,修复被其他插件覆盖的数据包自动修复

此外,传送、重生、切换世界后时装都会自动重建。

骨骼冻结检测可在 config.yml 调整:

config.yml
follow-watchdog:
enabled: true
check-interval-ticks: 5 # 每几 tick 检查一次(最小 2)
failures-before-rebuild: 3 # 连续几次异常才重建(最小 2)
rebuild-cooldown-seconds: 5 # 两次重建的最短间隔(最小 1)
警告

不建议把检测间隔与失败次数调得过低,短暂的网络延迟可能导致不必要的重建。

常见跟随问题​

现象处理
转身时背饰慢半拍改用 rigid;纯物品背饰可改为 equipment
翅膀在身体里 / 离身体太远调整 offset.z(正数往后)
环绕模型跟着视角乱转设 follow-rotation: false
静止时模型微微抖动使用 smooth 并提高 dead-zone
传送后模型留在原地确认 follow-watchdog.enabled: true,通常会在数秒内自动修复
其他插件导致 BODY 时装松动已自动退回位置同步;检查是否有插件拦截乘客数据包