CollisionObject2D
Inherits: Node2D < CanvasItem < Node < Object
Inherited By: Area2D, PhysicsBody2D
二维碰撞对象的基础节点。
描述
CollisionObject2D是2D物理对象的基础类。它可以容纳任意数量的2D碰撞Shape2D。每个形状必须分配给一个shape owner。CollisionObject2D可以拥有任意数量的形状拥有者。形状所有者不是节点,也不会出现在编辑器中,但可以通过代码使用shape_owner_*
方法访问。
属性
| ||
| ||
|
方法
信号
- input_event ( Node viewport, InputEvent event, int shape_idx )
当输入事件发生时发出。要求 input_pickable为true
,并至少要设置一个collision_layer
位。有关详细信息,请参阅_input_event。
- mouse_entered ( )
当鼠标指针进入此对象的任何形状时触发。要求input_pickable为true
,并且至少要设置一个collision_layer
位。
- mouse_exited ( )
当鼠标指针退出此对象的所有形状时发出。要求input_pickable为true
,并且至少要设置一个collision_layer
位。
属性说明
- int collision_layer
Default |
|
Setter | set_collision_layer(value) |
Getter | get_collision_layer() |
The physics layers this CollisionObject2D is in. Collision objects can exist in one or more of 32 different layers. See also collision_mask.
Note: A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See Collision layers and masks in the documentation for more information.
- int collision_mask
Default |
|
Setter | set_collision_mask(value) |
Getter | get_collision_mask() |
The physics layers this CollisionObject2D scans. Collision objects can scan one or more of 32 different layers. See also collision_layer.
Note: A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See Collision layers and masks in the documentation for more information.
- bool input_pickable
Default |
|
Setter | set_pickable(value) |
Getter | is_pickable() |
如果true
,这个对象是可拾取的。一个可拾取的对象可以检测鼠标指针的进入/离开,如果鼠标在里面,就报告输入事件。要求至少有一个 collision_layer
位被设置。
方法说明
- void _input_event ( Object viewport, InputEvent event, int shape_idx ) virtual
接受未处理的InputEvent。要求input_pickable为true
。 shape_idx
被点击的Shape2D的子索引。连接到input_event
信号即可轻松接收这些事件。
为给定对象创建一个新的形状拥有者。返回owner_id
的新所有者,供将来引用。
返回是否设置了碰撞层 collision_layer 的指定位bit
。
返回是否设置了碰撞掩码 collision_mask 的指定位bit
。
- RID get_rid ( ) const
返回对象的 RID。
返回由给定的owner_id
标识的形状所有者的one_way_collision_margin
。
- Array get_shape_owners ( )
返回一个owner_id
标识符的Array。你可以在其他使用owner_id
作为参数的方法中使用这些id。
如果true
,则禁用形状所有者及其形状。
返回true
,如果源于这个CollisionObject2D
的形状所有者的碰撞不会被报告给CollisionObject2D
s。
- void remove_shape_owner ( int owner_id )
移除给定形状的所有者。
如果value
为true
,则设置collision_layer中指定的bit
位。
如果value
为false
,清除collision_layer中指定的 bit
位。
如果value
为true
,则设置collision_mask中指定的bit
位。
如果value
为false
,清除collision_mask中指定的 bit
位。
返回指定形状的owner_id
。
给形状所有者添加一个Shape2D。
- void shape_owner_clear_shapes ( int owner_id )
移除形状所有者的所有形状。
返回给定形状所有者的父对象。
从给定的形状所有者那里返回给定id的Shape2D。
返回给定形状所有者包含的形状数量。
从给定的形状所有者那里返回给定id的Shape2D的子索引。
- Transform2D shape_owner_get_transform ( int owner_id ) const
返回形状所有者的Transform2D。
从给定的形状所有者中删除一个形状。
如果true
,则禁用给定的形状所有者。
如果enable
为true
,则源自这个CollisionObject2D
的形状所有者的碰撞将不会被报告给CollisionObject2D
。
将由给定的owner_id
标识的形状所有者的one_way_collision_margin
设置为margin
像素。
- void shape_owner_set_transform ( int owner_id, Transform2D transform )
设置给定形状所有者的Transform2D。