Skip to content

HUD系统

文档版本:基于 2026-06-01 代码分析

面向对象:开发者与高级管理员 | 本文档描述HUD系统的技术实现。

概述

HUD(Heads-Up Display)系统在游戏进行中为玩家提供实时信息叠层。包含 坐标显示准星玩家信息存活逃走者列表游戏倒计时复活阶段标记五项功能。猎人和工作人员可见全部信息,逃走者仅可见坐标。


核心概念

可见性权限

信息模块HUNTER/NPCRUNNER
坐标显示
准星玩家信息
存活逃走者列表
游戏倒计时
复活阶段标记

坐标模式

模式显示内容
world绝对世界坐标(x, y, z
local相对原点偏移(x-originX, y-originY, z-originZ

架构设计

HUD 渲染布局

mermaid
graph TB
    subgraph Screen["屏幕空间"]
        subgraph TopLeft["左上角"]
            Alive["存活逃走者列表<br/>isHunterOrNpc可见"]
        end
        subgraph BottomLeft["左下角"]
            Timer["游戏倒计时<br/>isHunterOrNpc可见"]
        end
        subgraph BottomRight["右下角"]
            Crosshair["准星玩家信息<br/>isHunterOrNpc可见"]
            Coord["坐标显示<br/>全体可见"]
        end
    end

时间同步机制

mermaid
flowchart LR
    Server["服务端<br/>SyncRfmGameStatePayload"] -->|"syncMillis + serverNowMillis"| Client["客户端<br/>RfmGameClientState"]
    Client -->|"serverToClientOffset校准"| Now["getElapsedSecondsNow()<br/>getRemainingSecondsNow()"]

关键文件

文件说明
com/chenxi/chenxi_rfm/client/event/ClientRfmHudEvents.javaHUD 渲染主入口
com/chenxi/chenxi_rfm/client/event/ClientPhoneCallHudEvents.java通话状态HUD(独立)
com/chenxi/chenxi_rfm/client/rfm/RfmGameClientState.java游戏状态+时间校准
com/chenxi/chenxi_rfm/client/rfm/RfmHudClientState.javaHUD数据状态

关键流程

坐标显示

  • 位置:屏幕右下角
  • 格式:64,128,456(逗号分隔,无空格)
  • 颜色:0xA0D0D0D0
  • WORLD 模式直接显示玩家坐标;LOCAL 模式减去原点偏移

准星玩家信息

  • 从玩家眼睛位置发射 24 格射线
  • 先检测方块碰撞缩短距离
  • 再检测玩家实体碰撞
  • 命中后从 RfmHudClientState 查找角色数据
  • 显示格式(6 种标签):[逃走者] 玩家名 / [猎人] 玩家名 / [工作人员] 玩家名 / [逃走者-叛节者] 玩家名 / [弃权] 玩家名 / [出局] 玩家名

存活逃走者列表

  • 正常阶段:标题"剩余存活逃走者: N人",逐行列出玩家昵称
  • 复活阶段:标题切换为"剩余待复活逃走者: N人"
  • 仅在 shouldShowHud() 为 true 时渲染

游戏倒计时

  • 格式:游戏倒计时: XX分XX秒
  • 使用客户端校准后的时间计算
  • 左下角

注意事项

  1. 复活阶段HUD内容自动切换(存活列表→待复活列表)
  2. 时间校准考虑网络延迟(serverToClientOffset
  3. 所有HUD仅在游戏状态 != IDLE 时渲染
  4. 通话HUD独立于RFM HUD系统ClientPhoneCallHudEvents 在非手机界面时渲染通话状态条(见手机GUI注意事项)

相关文档