手册:轻量对象(Area2DGameObject)

概述

Area2DGameObject 是在 1.2.0 版本中引入的一种游戏对象。与传统的 GameObject 相比,它通过省略与物理碰撞相关的功能来降低运行负载。

由于无法进行物理碰撞,它并不适合用于玩家或敌人等角色(这些角色若能穿过墙壁会造成问题),也不适合用于可破坏的墙壁等作为角色障碍物的对象。
但是,将不需要物理碰撞的对象替换为 Area2DGameObject,可以有效减轻游戏整体的处理负担。

技术概述

传统的 GameObject 是一个继承自 CharacterBody2D 节点的自定义节点,而 Area2DGameObject 顾名思义,是继承自 Area2D 节点创建的。

关于各节点之间的详细差异,请参考以下手册:

由于无法进行“物理碰撞”而无法实现的功能

由于不支持物理碰撞,以下行为将无法实现:

  • 无法与其他对象发生碰撞。
  • 无法沿着地面或墙壁的形状移动,也无法在斜坡上滑动。
  • 模板移动动作中的 “反弹移动”“不会从高处掉落” 功能将无法运行。

对于在 Area2DGameObject 中无法生效的属性,系统会显示提示警告。

即使没有“物理碰撞”仍可实现的功能

  • 仍然可以检测与其他对象的接触,因此与墙壁判定等接触类条件可以正常工作。
  • 仍然可以受到重力的影响。

可以将其理解为一种传感器:没有实体碰撞,但可以进行检测。
基本上,除上述“无法实现的功能”之外,其余功能都可以正常使用。

通过在可视化脚本中设置诸如 “与瓦片接触时”“将移动速度设为 0” 等行为,可以实现伪碰撞处理。例如,可以模拟敌人被击败后道具四散的效果。
但由于这只是模拟处理,发生对象重叠等问题的可能性会提高,请务必注意。

Area2DGameObject 的使用方法

Area2DGameObject 与现有的 GameObject 具有兼容性。只需右键点击 GameObject 节点,选择 “更改类型”,即可切换为 Area2DGameObject

同样地,也可以使用相同的方法将 Area2DGameObject 切换回 GameObject