转向与跟随
「跟得紧、转得顺、不会卡住」是时装插件最难做好的部分,也是云时装投入最多打磨的地方。 本页说明云时装如何让模型跟着玩家走、跟着玩家转,以及你可以如何调整。
云时装的跟随不是简单的「每隔几 tick 传送一次模型」:
- 模型位置与朝向每 tick 同步,搭配 1 tick 客户端插值,快速移动也不拖影;
- BODY 模式使用客户端虚拟乘客,由客户端直接把时装绑在玩家身上,零延迟;
- 内置三重自我修复,模型停摆、冻结、脱节都会自动重建;
- 转向提供硬连接、原生身体、自适应平滑三种模式,并带死区防抖与大角度瞬间对齐。
两个开关:谁决定朝向
| 设置 | 位置 | 作用 |
|---|---|---|
follow-rotation | 每件时装 | 要不要跟着玩家转 |
rotation.mode | config.yml(全局) | 怎么跟着玩家转 |
follow-rotation
follow-rotation: true
| 值 | 行为 | 适合 |
|---|---|---|
true(默认) | 时装随玩家朝向旋转 | 翅膀、披风、背饰、贴身装甲 |
false | 只跟随位置,朝向保持不变 | 环绕玩家飞行的龙、宠物、自带环绕动画的法器 |
模型自己带有环绕 / 位移动画时,务必设为 false,否则动画的轨道会跟着玩家视角一起转,看起来会乱飞。
转向模式 rotation.mode
rotation:
mode: rigid
| 模式 | 朝向来源 | 手感 | 推荐 |
|---|---|---|---|
rigid(默认) | 玩家视角朝向 | 像焊在玩家身上,视角一转立即同步 | 翅膀、贴身背饰 |
native-body | Minecraft 原生身体朝向 | 与原版身体一样,转头时身体会有零点几秒的自然延迟 | 追求原版角色感 |
smooth | 视角朝向 + 自适应平滑 | 柔和追踪,小动作不抖、大回头迅速跟上 | 大型模型、展示型时装 |
- 三种模式都作用于
meg时装。 display与body使用rigid(视角朝向)或native-body(身体朝向)作为朝向来源;smooth的平滑追踪仅作用于meg。equipment由原版骨架渲染,永远与玩家本人完全一致,不受此设置影响。
smooth 自适应参数
smooth 并不是固定速度的插值,而是按「与目标朝向相差多少」分段调整追踪速度:
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.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 调整:
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 时装松动 | 已自动退回位置同步;检查是否有插件拦截乘客数据包 |