动作游戏制作器直接使用Godot的碰撞层系统。有效使用时,这允许实现各种各样的碰撞行为和交互。
配置碰撞的位置
墙壁碰撞
- 游戏对象:
CollisionObject2D > Collision
- 图块:
TileSet > PhysicsLayers
攻击碰撞
- AttackArea2D:
CollisionObject2D > Collision
受击碰撞
- HitArea2D:
CollisionObject2D > Collision
理解 CollisionLayer 和 CollisionMask
- 碰撞层 (Collision Layer):指示对象属于哪些层。
- 碰撞掩码 (Collision Mask):指示对象希望与哪些层发生碰撞。
碰撞与组/攻击属性检查的顺序
- 碰撞处理(碰撞层 / 碰撞掩码)
- 组 / 攻击属性处理
这意味着组或属性检查仅在检测到碰撞后才会执行。因此,如果两个对象或图块没有发生碰撞,它们的组/属性处理将不会执行。
组织碰撞层名称
您可以通过以下方式为碰撞层分配名称:
项目设置 > 常规 > 层名称 > 2D 物理
设置后,将鼠标悬停在层号上即可显示分配的名称。
单向碰撞
由于碰撞掩码 (CollisionMask) 是单向的,它允许非对称交互:
示例:
- 对象 A:层 = 1,掩码 = 1
- 对象 B:层 = 2,掩码 = 1, 2
→ 对象 A 不会检测到对象 B,但对象 B 会检测到对象 A。
这导致独特的结果:
- 对象 A 可以推动对象 B,但
- 对象 B 无法推动对象 A
为什么?
这是由于一个稍显进阶的概念:
- 对象 A 不识别 对象 B,但它仍然会移动。
- 对象 B(它确实识别对象 A)试图应用反向推力物理效果。
- 然而,由于对象 A不识别该碰撞,它不会做出响应,并且甚至不会移动 1 像素。
可站立的移动平台
您可以利用此行为创建不会因碰撞而移位、但能承载角色的平台。
操作方法:
- 将移动平台的碰撞掩码设置为无(空)。
- 这使得平台免疫于被任何物体推动,但仍能承载站在其上的物体。



