# 脚点、碰撞、门双端与画框：让地图真的能用

把贴图、地面占地、碰撞、遮挡与视口分开，定位卡角、过门弹回和关键关系看不见的原因。

讲解与示意图为本站原创教学。配音为本机离线中文合成语音，不是原演讲者声音。

## 1. 同一件柜子，需要分开四种轮廓

可见像素，不应自动成为地面障碍。

俯视像素画里的高柜既有地面上的柜脚，也有向画面上方延伸的柜身。如果把整张贴图都当作地面碰撞，角色会在看似空着的位置停住。先分别画出贴图、占地、阻挡和遮挡轮廓，再标出角色脚点的小碰撞形状。脚点方案是本练习的表达选择，不是所有游戏的统一规则。检查时先修脚下关系，再看人物经过家具前后时的遮挡，不用改门位置去掩盖柜子碰撞画错。

## 2. 净宽能算出来，顺不顺仍要运行

理论余量是诊断依据，不是操作通过证据。

使用一组可替换的原创实验值：角色碰撞宽十二像素，通道净宽二十八像素，居中时两侧各剩八像素。这个算式只证明横向余量，没证明斜走和掉头顺畅。网格大小、角色贴图宽度也不能替代碰撞宽度。进入独立练习场景后，显示碰撞形状，沿通道两边分别走一次，再从转角不同方向进入。如果卡住，记录碰到哪条边，别先把整张地图统一加宽。

## 3. 绕行路径要给转向留空间

看起来有两条路，实际可能只有一条能用。

图中大件物体上下都有绕行路线，但作者从中间直走通过一次，不能证明两条路线都可用。最容易漏掉的是进入转角和绕出家具末端时的身体转向。先不加追逐，让角色从两侧各完成往返，并贴着内外两条边检查。若上侧只能精确走中线才通过，它就不是与下侧等价的选择。先修真实的碰撞轮廓和拐角余量，再决定是否值得把这件家具用于躲避或追逐。

## 4. 门两端应该讲得通同一栋建筑

位置、离场方向和返回方向要相互解释。

从甲房间东门走出去，进入相邻乙房间后，玩家应能理解自己从哪一侧来到这里。图里的建筑边界帮助我们核对这种关系，不要求每间房尺寸完全一致。为每道门分别写两端的来源、目标房间、到达脚点和朝向，返回时再核对一次。不同场景各有局部坐标，不能把甲房的坐标直接当作乙房落点。刻意的异常空间可以违背常识，但应是被设计的变化，不是接门时漏填了一端。

## 5. 过门立即弹回，先看落点与触发带

落点在返回触发区内，会制造连续切场。

左侧离场正常，右侧却把角色放在返回门的触发带里，于是刚到达又切回去了。这里的问题不一定是玩家按得太快。先查看目标端真实触发范围，再查看脚点碰撞是否与它重叠，不能只看人物贴图中心。任意增加一秒冷却可能暂时遮住症状，却让每次正常过门多出等待。先修落点和返回条件，再检查按住方向进入、贴边进入和立即反向三种操作。

## 6. 暂停：这个到达点已经离开触发区吗？

算角色边缘，不只比较中心位置。

仍用原创实验，不把这些数值当成正式像素规范。假设目标门触发带从零延伸到十六，角色横向碰撞宽十二，中心落在二十四，且没有额外偏移。角色左边缘就是十八，理论上已经在触发带外。若碰撞节点还有局部偏移，这个计算必须重做；纵向重叠和触发实现也要一起检查。选择正确判断后，再到引擎里验证，网页示意和算术都不能替代真实切场。

### 暂停思考
上述无横向偏移条件下，最准确的判断是什么？
A. 中心大于十六，所以任何碰撞宽度都安全
B. 只有改成更小的角色贴图才能解决
C. 左边缘十八大于十六，横向有余量，仍需实测
答案：C。必须比较实际碰撞边缘。横向不重叠是必要检查之一，还要验证触发逻辑、纵向位置和返回操作。

## 7. 画框决定玩家能否同时理解关系

地图存在的关系，不一定出现在玩家眼前。

关卡总图里，问题和验证点可能离得很近，进入游戏却被镜头边缘或对话框分开。请从玩家真实到达位置观察第一屏，而不是从编辑器缩小后的全景判断。需要立即比较的关系应尽量可见；需要探索的目标可以在下一屏，但移动过去应有合理方向。打开对话面板再检查一遍，看看它是否盖住门口或物件提示。不要为了塞进所有信息，把人物和文字一起缩得难以辨认。

## 8. 独立练习：做一次有记录的双向过门

用具体路径和操作条件证明几何成立。

在独立灰盒里放一件柜子和连接两个区域的门，记录视口、脚点碰撞以及两端落点。先保存一张显示碰撞的截图，再从门两侧分别居中进入、贴边进入、按住方向不松手进入，每次检查房间、位置、朝向和是否二次切场。最后打开对话面板看提示有无被盖住。若只在同一场景测试了两个区域，要把跨场景切换写成待验证，不把同场景走通冒称门的全部行为已经通过。

## 参考资料

- [Godot stable · Using CharacterBody2D/3D](https://docs.godotengine.org/en/stable/tutorials/physics/using_character_body_2d.html)：核对 Godot 4 系列 stable 正文：角色移动由代码控制，通过移动碰撞方法处理接触；Sprite2D 与 CollisionShape2D 职责不同。脚点方案、所有尺寸和门表均是原创练习，不是官方统一规格。
- [Godot stable · Using Viewports](https://docs.godotengine.org/en/stable/tutorials/rendering/viewports.html)：核对正文关于视口、相机和分辨率的职责。本课画框可读性检查是教学推演，不等同于引擎已运行通过。
