耳内有灰:
问题原因:拆除屋檐/柱子时调用的是旧版全局方法 mapData:UninstallRoof(),它只检查已弃用的 self.roofInstalled 全局字段。而实际屋檐数据存储在 wallParts[wk].roofInstalled 中。修复:从 piece.data.wallKey 解析出 anchorRow, anchorCol,改为调用 mapData:UninstallWallParts(row, col),这个方法会正确清除对应墙段的 pillarsInstalled 和 roofInstalled。
:
掉落物深度排序修复问题根因:MapCanvas 的渲染分两个阶段:_RenderBuildings — 建筑和树木统一按行号(sortRow)深度排序,远处先画、近处后画_RenderNPCs — 角色和掉落物,没有排序,且在建筑/树木之后绘制这导致所有掉落物无条件画在所有树木上面,不管掉落物实际上在哪棵树的前面还是后面。修复方案:将掉落物纳入 _RenderBuildings 的统一深度排序:_RenderBuildings 新增第 3 步:收集 _isDrop 标记的 NPC,根据 content 坐标 cy / ts + 1 计算 sortRow,与建筑/树木一起排序新增 _RenderOneDrop 方法:处理掉落物的坐标变换和 renderFunc 调用_RenderNPCs 增加 npc._isDrop 跳过判断,避免重复渲染现在掉落物会和树木按同一深度轴排序,后方树木掉出的木头会被前方树木正确遮挡,Q/E 旋转后也不会出现"木头跑到树冠上"的视觉错误。
:
修改总结:问题根因:掉落物的下落动画在内容坐标系中操作 Y 坐标(currentY = originY - FALL_HEIGHT),但在等距视角(isometric)下,内容坐标 Y 的偏移会被旋转+压缩变换成屏幕上的对角线方向移动,导致木头看起来是"从旁边飘进来"而不是"从上往下掉"。修复方案:分离内容坐标与视觉高度:新增 visualHeight 属性,独立于内容坐标内容坐标只做水平插值:currentX/currentY 从树中心平滑移动到散落终点,不再包含竖直偏移使用 renderFunc 施加屏幕空间偏移:在 counter-rotation + undo-ISO 变换之后,通过 yOff = -visualHeight 将精灵向上偏移。这样下落动画就是在屏幕空间中垂直方向的移动,视觉上就是"从树冠正上方往下掉"弹跳也改为屏幕空间:落地后的小弹跳同样通过 visualHeight 实现
:
导入成功了!角色在画布上显示正确。关于走动动画,最快的测试方法不需要新功能——你已经有两张正面图(A 和 B 姿态),它们交替就是走路动画:现有素材直接用:帧 素材 说明行走 帧1 dad_front_idle.json (A) 姿态A行走 帧2 dad_front_idle_b.json (B) 姿态B操作步骤:底部切到 “行走” 状态确认 帧 1/2,点"导入" → 选"爸爸-正面站立A"切到 帧 2/2,点"导入" → 选"爸爸-正面站立B"点 “播放” 预览两帧 A/B 姿态交替就是最基础的像素走路动画。后续如果要批量自动化(比如一键导入 3 朝向 × 2 状态 × 2 帧 = 12 张),那时再加一个"批量导入"按钮,根据文件命名规则自动匹配到对应的 方向/状态/帧。但现在手动导入 2 帧就够验证效果了。
:
实现内容总结:测量牌匾区域 — 通过 PIL 分析 roof_mid.png(152×217),确定牌匾木板区域为 x=20…132, y=104…142,转换为比例常量添加比例常量(约 1786 行):PLAQUE_LEFT_RATIO = 0.1316,PLAQUE_RIGHT_RATIO = 0.8684PLAQUE_TOP_RATIO = 0.4793,PLAQUE_BOTTOM_RATIO = 0.6544牌匾隐形框+悬停检测(_RenderRoof 步骤 7c):根据中段位置 (roofLeft + capW, roofTop) 和中段尺寸 (midW, roofH) 乘以比例,计算牌匾矩形将鼠标屏幕坐标通过 ScreenToContent → 逆旋转 → 逆缩放,转换到 counter-rotation local 空间鼠标在牌匾矩形内时,绘制 2px 红色描边边框请预览测试 — 鼠标移到屋檐中段的牌匾区域上时应该出现红色边框。










