滚动缩放地图是以NPC角色位置缩放

昨天 15:36综合
鼠标在屏幕哪个位置滚动缩放地图大小之后,屏幕会自己移动至NPC为中心的位置,视觉上感觉屏幕自己移动了一下。
嗒:
问题分析:
当前 MapCanvas:OnWheel() 缩放时,以鼠标光标位置为锚点调整 panX_/panY_。但在游戏模式下,PlayerController:_CenterCamera() 每帧都在通过 lerp 把相机拉回玩家中心。这两者产生了冲突——缩放瞬间把视口偏移到鼠标位置,然后相机又平滑拉回玩家,造成"屏幕自己移动了一下"的视觉跳动。
修复方案: 在游戏模式(readOnly = true)下,OnWheel 缩放以屏幕中心(即玩家位置)为锚点,而不是鼠标位置。这就是《饥荒》的做法——缩放始终围绕角色。
构建成功。修改说明:
问题根因: MapCanvas:OnWheel() 缩放时以鼠标光标位置为锚点调整 panX_/panY_,但游戏模式下 PlayerController:_CenterCamera() 每帧通过 lerp 把相机拉回玩家中心。两者冲突导致缩放后屏幕会"弹回"玩家位置,产生视觉跳动。
修改内容: scripts/editor/MapCanvas.lua:453-464 — 在 OnWheel 中根据 readOnly 属性区分两种模式:
模式 缩放锚点 效果
游戏模式 (readOnly=true) 屏幕中心(玩家位置) 饥荒风格,缩放围绕角色,不产生跳动
编辑器模式 鼠标光标位置 保持原有行为不变
这样在玩家入口中,缩放始终以角色为中心进行,与 _CenterCamera 的跟随逻辑一致,不再出现屏幕自动偏移的问题。
1