奥维实验icon
奥维实验
耳内有灰
问题原因:拆除屋檐/柱子时调用的是旧版全局方法 mapData:UninstallRoof(),它只检查已弃用的 self.roofInstalled 全局字段。而实际屋檐数据存储在 wallParts[wk].roofInstalled 中。修复:从 piece.data.wallKey 解析出 anchorRow, anchorCol,改为调用 mapData:UninstallWallParts(row, col),这个方法会正确清除对应墙段的 pillarsInstalled 和 roofInstalled。
耳内有灰
对话框和列表都正常了。但有两个问题:导入了 0 个像素 — 日志显示 (128.0x128.0 -> 32x32) 但 导入完成: 0 个像素KTX 格式错误 — Unsupported texture format in KTX file,说明 cache:GetResource("Image", ...) 加载了 GPU 压缩格式,GetPixel 无法正确读取需要改用 Image() 直接加载文件来读取原始像素数据。Image 有 IsCompressed() 方法。问题是 cache:GetResource("Image", ...) 可能自动加载了 KTX 压缩格式。需要用 Image:new() 创建并手动从文件加载,绕过缓存的压缩格式。我可以用 cache:GetFile() 获取文件,然后用 Image:new() 创建 Image 对象并从文件 load。Bot Avatar现在修改 CharData:ImportFromImage,改用 Image:new() + cache:GetFile() 加载原始 PNG 数据。构建成功。修复方案:改用 cache:GetFile() + Image:new() + image:Load(file) 加载原始 PNG 数据绕过 cache:GetResource("Image") 可能返回的 KTX GPU 压缩格式加了 IsCompressed() 检查作为额外保险可以预览测试——再次点击「导入」选择一张图片,应该能看到像素被正确导入到画布上了。
耳内有灰
修改总结:问题根因:掉落物的下落动画在内容坐标系中操作 Y 坐标(currentY = originY - FALL_HEIGHT),但在等距视角(isometric)下,内容坐标 Y 的偏移会被旋转+压缩变换成屏幕上的对角线方向移动,导致木头看起来是"从旁边飘进来"而不是"从上往下掉"。修复方案:分离内容坐标与视觉高度:新增 visualHeight 属性,独立于内容坐标内容坐标只做水平插值:currentX/currentY 从树中心平滑移动到散落终点,不再包含竖直偏移使用 renderFunc 施加屏幕空间偏移:在 counter-rotation + undo-ISO 变换之后,通过 yOff = -visualHeight 将精灵向上偏移。这样下落动画就是在屏幕空间中垂直方向的移动,视觉上就是"从树冠正上方往下掉"弹跳也改为屏幕空间:落地后的小弹跳同样通过 visualHeight 实现