CollisionObject2D

Inherits: Node2D < CanvasItem < Node < Object

Inherited By: Area2D, PhysicsBody2D

二维碰撞对象的基础节点。

描述

CollisionObject2D是2D物理对象的基础类。它可以容纳任意数量的2D碰撞Shape2D。每个形状必须分配给一个shape owner。CollisionObject2D可以拥有任意数量的形状拥有者。形状所有者不是节点,也不会出现在编辑器中,但可以通过代码使用shape_owner_*方法访问。

方法

void

_input_event ( Object viewport, InputEvent event, int shape_idx ) virtual

int

create_shape_owner ( Object owner )

bool

get_collision_layer_bit ( int bit ) const

bool

get_collision_mask_bit ( int bit ) const

RID

get_rid ( ) const

float

get_shape_owner_one_way_collision_margin ( int owner_id ) const

Array

get_shape_owners ( )

bool

is_shape_owner_disabled ( int owner_id ) const

bool

is_shape_owner_one_way_collision_enabled ( int owner_id ) const

void

remove_shape_owner ( int owner_id )

void

set_collision_layer_bit ( int bit, bool value )

void

set_collision_mask_bit ( int bit, bool value )

int

shape_find_owner ( int shape_index ) const

void

shape_owner_add_shape ( int owner_id, Shape2D shape )

void

shape_owner_clear_shapes ( int owner_id )

Object

shape_owner_get_owner ( int owner_id ) const

Shape2D

shape_owner_get_shape ( int owner_id, int shape_id ) const

int

shape_owner_get_shape_count ( int owner_id ) const

int

shape_owner_get_shape_index ( int owner_id, int shape_id ) const

Transform2D

shape_owner_get_transform ( int owner_id ) const

void

shape_owner_remove_shape ( int owner_id, int shape_id )

void

shape_owner_set_disabled ( int owner_id, bool disabled )

void

shape_owner_set_one_way_collision ( int owner_id, bool enable )

void

shape_owner_set_one_way_collision_margin ( int owner_id, float margin )

void

shape_owner_set_transform ( int owner_id, Transform2D transform )

信号

当输入事件发生时发出。要求 input_pickabletrue,并至少要设置一个collision_layer位。有关详细信息,请参阅_input_event


  • mouse_entered ( )

当鼠标指针进入此对象的任何形状时触发。要求input_pickabletrue,并且至少要设置一个collision_layer位。


  • mouse_exited ( )

当鼠标指针退出此对象的所有形状时发出。要求input_pickabletrue,并且至少要设置一个collision_layer位。

属性说明

  • int collision_layer

Default

1

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

1

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

true

Setter

set_pickable(value)

Getter

is_pickable()

如果true,这个对象是可拾取的。一个可拾取的对象可以检测鼠标指针的进入/离开,如果鼠标在里面,就报告输入事件。要求至少有一个 collision_layer 位被设置。

方法说明

接受未处理的InputEvent。要求input_pickabletrueshape_idx被点击的Shape2D的子索引。连接到input_event信号即可轻松接收这些事件。


为给定对象创建一个新的形状拥有者。返回owner_id的新所有者,供将来引用。


  • bool get_collision_layer_bit ( int bit ) const

返回是否设置了碰撞层 collision_layer 的指定位bit


  • bool get_collision_mask_bit ( int bit ) const

返回是否设置了碰撞掩码 collision_mask 的指定位bit


  • RID get_rid ( ) const

返回对象的 RID


  • float get_shape_owner_one_way_collision_margin ( int owner_id ) const

返回由给定的owner_id标识的形状所有者的one_way_collision_margin


  • Array get_shape_owners ( )

返回一个owner_id标识符的Array。你可以在其他使用owner_id作为参数的方法中使用这些id。


  • bool is_shape_owner_disabled ( int owner_id ) const

如果true,则禁用形状所有者及其形状。


  • bool is_shape_owner_one_way_collision_enabled ( int owner_id ) const

返回true,如果源于这个CollisionObject2D的形状所有者的碰撞不会被报告给CollisionObject2Ds。


  • void remove_shape_owner ( int owner_id )

移除给定形状的所有者。


  • void set_collision_layer_bit ( int bit, bool value )

如果valuetrue,则设置collision_layer中指定的bit位。

如果valuefalse,清除collision_layer中指定的 bit位。


  • void set_collision_mask_bit ( int bit, bool value )

如果valuetrue,则设置collision_mask中指定的bit位。

如果valuefalse,清除collision_mask中指定的 bit位。


  • int shape_find_owner ( int shape_index ) const

返回指定形状的owner_id


  • void shape_owner_add_shape ( int owner_id, Shape2D shape )

给形状所有者添加一个Shape2D


  • void shape_owner_clear_shapes ( int owner_id )

移除形状所有者的所有形状。


  • Object shape_owner_get_owner ( int owner_id ) const

返回给定形状所有者的父对象。


  • Shape2D shape_owner_get_shape ( int owner_id, int shape_id ) const

从给定的形状所有者那里返回给定id的Shape2D


  • int shape_owner_get_shape_count ( int owner_id ) const

返回给定形状所有者包含的形状数量。


  • int shape_owner_get_shape_index ( int owner_id, int shape_id ) const

从给定的形状所有者那里返回给定id的Shape2D的子索引。


返回形状所有者的Transform2D


  • void shape_owner_remove_shape ( int owner_id, int shape_id )

从给定的形状所有者中删除一个形状。


  • void shape_owner_set_disabled ( int owner_id, bool disabled )

如果true,则禁用给定的形状所有者。


  • void shape_owner_set_one_way_collision ( int owner_id, bool enable )

如果enabletrue,则源自这个CollisionObject2D的形状所有者的碰撞将不会被报告给CollisionObject2D


  • void shape_owner_set_one_way_collision_margin ( int owner_id, float margin )

将由给定的owner_id标识的形状所有者的one_way_collision_margin设置为margin像素。


  • void shape_owner_set_transform ( int owner_id, Transform2D transform )

设置给定形状所有者的Transform2D