CollisionObject2D
CollisionObject2D is the base class for 2D physics objects. It can hold any number of 2D collision Shape2Ds. Each shape must be assigned to a shape owner. The CollisionObject2D can have any number of shape owners.
CollisionObject2D 是所有2D物理体的基类。它可以包含任意数量的2D碰撞形状。其中每一个形状必须要分配一个形状所有者。CollisionObject2D 可以具有任意数量的形状所有者。
四种2D物理体
从CollisionObject2D 拓展出的类,有两大类,一个是Area2D;一个是PhysicsBody2D。其中PhysicsBody2D中又有三个小类。
Area2D(特别常用)
Area2D节点提供检测和影响。它们可以检测物体何时重叠,并可以在物体进入或离开时发出信号。Area2D 还可以覆盖定义区域中的物理特性,例如重力或阻尼。
最大的特点是能发出了一些检测重叠碰撞的信号。这是其他节点没有的。
StaticBody2D(常用)
静态物体是物理引擎不会移动的物体。它参与碰撞检测,但不会响应碰撞而移动。它们最常用于环境中的对象或不需要任何动态行为的对象。
RigidBody2D
这是实现模拟2D物理的节点。您不必直接控制RigidBody2D节点的属性 ,而是要对其施加力(重力,脉冲等),然后物理引擎将计算最终的运动。
KinematicBody2D(特别常用)
提供碰撞检测但没有物理学的物体。所有运动和碰撞响应都必须用代码实现。
2D物理体的一些特性
- 它们都有物理层的概念。它们只能看到检测层的东西。
- Area2D 具有monitor选项,可以选择不给任何节点看以及不看任何层。其他物理体没有该选项。
- Area2D 具有报告碰撞状态的信号。其他物理体没有该信号。可以看到,检测 区域碰撞和物体碰撞是两个不同的信号。所以 Area2D 和 PhysicsBody2D 具有很大区别。