火炬之光2 的移动骨子里是「目标点下单 + 走格 A* 寻路」驱动的:你点一下地面,引擎收到一条"移动到那里"的指令,剩下的寻路、避障、转向、迈腿全是它自己的事。PC 版压根没有"方向移动"这条输入通路 —— 没有手柄支持,键盘只管技能和菜单。

所以 WASD 的思路不是去改坐标,而是顺着引擎自己的语言说话:每帧把按键方向(结合相机朝向)合成一个近处的目标点,向引擎下一条"移动到点"的指令。走「下单」这条路,好处全是白拿的 ——

  • 寻路、碰撞、贴地、转向、行走动画都由引擎原生逻辑处理,不用自己重新发明;
  • 联机安全:移动指令本来就是会网络同步的东西,直接改写坐标则必然 desync。

地基已经打完(IDA 逆向实证):

  • 本地玩家怎么拿:全游戏共用的 game-state 单例被两千多处代码引用,本地玩家单位指针就挂在它的固定槽位上,判据来自触发区系统"是不是本地玩家"的原生比较 —— 稳。
  • “移动到点"在哪下单:引擎内部有一个逐单位的寻路下单函数,起点自动取单位当前坐标,喂给它目标 XZ 就跑 A* 并置移动状态、调转向 —— 这就是 WASD 每帧要敲的那扇门。

交付载体是现成的 Mikuro Runtime(d3d9 代理层,冷却缩减、拾取过滤那套已经在跑),WASD 会作为它的新组件加入。接下来要过的坎:连续下单能否产出平滑的步行动画、按键节流与松键停走的手感、以及相机视角与方向合成的校准 —— 都得进游戏实测说话。

鼠标点了十四年地板,该让左手上岗了。