PEAK
Install with App

Details

Latest version
0.1.6
Last Updated
First Uploaded
Downloads
727
Likes
0
Size
159KB
Dependants

Categories

童子军大炮(ScoutCannonHelper)

版本:0.1.6

为 PEAK 的童子军大炮提供三项辅助功能,每项都有独立开关,只写本地配置、不改动游戏本体数据,仅需你自己安装即可生效,其他玩家无需安装。与 ScoutCannonWhere(大炮落点预览)兼容。

功能

  1. 炮口瞄准指示:手持童子军大炮建造卷轴、地面出现大炮放置预览时,按一下切换键,屏幕上叠加显示放置预览的炮口指向(屏幕内为炮口准星;炮口指向屏幕上方/画面外时在屏幕边缘显示提示),据此看清大炮将打向哪里、方便决定放在什么位置;再按一下关闭。
    • 屏幕角落瞄准小窗(画中画):同一状态下,在屏幕一角实时显示从炮口沿炮口方向看出去的画面,让你一边用主视角查看地面、移动并放置大炮,一边在小窗里直接看到炮口对准的远方目标——这是最直观的“同时看到炮口方向”的方式。
    • 默认不改变相机朝向,因此在指示开启的同时,你仍可自由移动、瞄准地面落点、正常放置大炮,三者互不冲突。
    • 可配置炮口准星的颜色、尺寸、投影距离、屏幕外边缘指示开关,以及小窗的位置、大小、视野角度、内准星等。
    • 若想进一步让相机也贴齐炮口方向(便于直视远方目标),可打开 锁定视角到炮口;但请注意:大炮放置依赖相机朝地面发射线判定落点,锁住相机会导致无法放置,建议只在观察远方时临时开启(有了小窗后通常无需再开)。
  2. 一键进入大炮:对准一门已放置的大炮,长按进入键,直接把角色送入炮口内,免去跳不进去的麻烦。
    • 禁止自动吸附本地玩家(默认开启):原版大炮会把走到炮口 1 米内的最近角色自动吸进炮内(这是原版装载队友的机制)。开启本项后,只有按进入键才会进入,避免你只是在大炮附近走动就被吸进去;此逻辑由主机执行,故仅当你是主机时生效。
  3. 炮内点火:当角色处于某门未点火大炮的炮口附近时,长按点火键(默认 E)即可点燃大炮,无需回头对准引信。

默认按键

功能 默认按键 触发方式
炮口瞄准指示 V 按一下显示,再按一下关闭
进入大炮 X 对准大炮长按(默认 0.3 秒)
炮内点火 E 炮口附近长按(默认 1 秒)

配置

配置文件:BepInEx/config/com.fufu.scoutcannonhelper.cfg

  • 视角对准炮口/启用炮口瞄准指示:默认开启
  • 视角对准炮口/切换按键:默认 V
  • 视角对准炮口/锁定视角到炮口:默认关闭(开启后相机贴齐炮口,但会导致无法放置大炮)
  • 视角对准炮口/完全对齐炮口方向:默认开启(仅在锁定视角时生效;关闭则只对齐俯仰)
  • 视角对准炮口/显示炮口准星:默认开启
  • 视角对准炮口/屏幕外显示边缘指示:默认开启
  • 视角对准炮口/准星基础尺寸:6 ~ 80
  • 视角对准炮口/准星投影距离:20 ~ 1000 米(越大越接近炮口正前方,推荐 200 以上)
  • 视角对准炮口/准星颜色:十六进制颜色,默认 #39FF6A
  • 瞄准小窗/启用瞄准小窗:默认开启(需额外渲染一遍场景,有少量开销)
  • 瞄准小窗/小窗位置:0=右下,1=右上,2=左下,3=左上(默认 0)
  • 瞄准小窗/小窗宽度(像素):96 ~ 800(默认 320,高度按 16:9 自动计算)
  • 瞄准小窗/小窗边距(像素):0 ~ 200(默认 16)
  • 瞄准小窗/视野角度:20 ~ 110(默认 60,越小越“拉近”)
  • 瞄准小窗/相机前移(米):0 ~ 5(默认 0.25;若小窗里看到炮管内壁或手臂可加大)
  • 瞄准小窗/小窗内准星:默认开启
  • 进入大炮/启用进入大炮:默认开启
  • 进入大炮/进入按键:默认 X
  • 进入大炮/长按时间(秒):0.05 ~ 3
  • 进入大炮/瞄准射线距离(米):2 ~ 200
  • 进入大炮/禁止自动吸附本地玩家:默认开启(避免走到大炮附近被原版自动吸进炮内;仅主机生效)
  • 炮内点火/启用炮内点火:默认开启
  • 炮内点火/点火按键:默认 E
  • 炮内点火/长按时间(秒):0.1 ~ 5
  • 炮内点火/炮内判定半径(米):0.5 ~ 6
  • 调试/详细日志:默认关闭

原理

  • 炮口瞄准指示:默认不修改相机,只在屏幕上叠加投影炮口方向上的远端点(炮口位置 + 炮口朝向 × 准星投影距离);该点位于屏幕内时绘制准星,位于屏幕外时钳到屏幕边缘显示,从而在俯视地面放置大炮时也能知道炮口朝向。之所以投影远端点而非近距离命中点,是因为相机位于角色头部、与炮口存在位置差,投影近距离命中点会产生明显视差,使准星偏离屏幕中心;投影远端点可消除该视差。炮口方向优先取放置预览中的 Entry/Cannon 节点,退回原版 Constructable.UpdateAngle 使用的 GetChild(0).GetChild(0) 炮管节点。
  • 锁定视角到炮口(可选):开启后拦截 Character.RecalculateLookDirections(),在本地角色手持大炮卷轴且处于瞄准状态时,把 data.lookValues 改写为放置预览炮口方向对应的视角值(默认俯仰与水平都对齐,可配置为只对齐俯仰)。因放置依赖相机射向地面的射线,此模式默认关闭。
  • 瞄准小窗(画中画):运行时新建一台独立相机,置于放置预览的炮口沿炮口方向前移处,把场景实时渲染到一个低分辨率 RenderTexture,再在 OnGUI 中画到屏幕角落。相机渲染时排除 UI 层,避免游戏 HUD 进入小窗;因游戏使用 URP,创建相机时会通过反射补上 UniversalAdditionalCameraData。仅在瞄准状态且手持炮口有效时启用相机,其余时间关闭以节省开销。
  • 进入大炮:从相机发射线命中 ScoutCannon 后,通过反射调用原版 Character.WarpPlayerRPC 把角色直接送入炮口。反射按优先级匹配 (Vector3, bool)(Vector3, bool, PhotonMessageInfo) 两种签名,缓存 MethodInfo,兼容游戏更新导致的签名变化。
  • 禁止自动吸附本地玩家:原版 ScoutCannon.FixedUpdate()(仅主机执行)会把距炮口 Entry 1 米内最近的角色沿炮管方向拉入(pullForce)。本 Mod 以 Harmony 前缀补丁在其执行前判断:若本地玩家正位于该吸附半径内,则跳过该方法,使你不会被动吸入;远离时原版吸附照常,队友仍可被正常装填。
  • 炮内点火:以角色中心与 ScoutCannon 炮口 entry 的距离判定“是否在炮内”,达到长按时间后调用原版 ScoutCannon.Light()(其内部走 Photon RPC,联机行为与原版引信完全一致)。

兼容性

  • 不修改 Constructable.CreateOrMovePreview,只读取 Constructable.currentPreview,不与 ScoutCannonWhere 的落点预览冲突。
  • 默认按键避开 ScoutCannonWhereC(其假人预览键)。
  • 点火复用原版 ScoutCannon.Light() 的 RPC 流程,多人与单机均正常。

安装

  • 使用 gale 等 Mod 管理器直接安装本压缩包。
  • 依赖 BepInEx-BepInExPack_PEAK-5.4.75301
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.