CollisionObject

Inherits: Spatial < Node < Object

Inherited By: Area, PhysicsBody

碰撞对象的基础节点。

描述

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

属性

int

collision_layer

1

int

collision_mask

1

bool

input_capture_on_drag

false

bool

input_ray_pickable

true

方法

void

_input_event ( Object camera, InputEvent event, Vector3 position, Vector3 normal, 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

Array

get_shape_owners ( )

bool

is_shape_owner_disabled ( 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, Shape shape )

void

shape_owner_clear_shapes ( int owner_id )

Object

shape_owner_get_owner ( int owner_id ) const

Shape

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

Transform

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_transform ( int owner_id, Transform transform )

信号

当对象收到未处理的 InputEvent 时发出。 position 是鼠标指针在具有索引 shape_idx 的形状表面在世界空间中的位置,normal 是该点表面的法向量.


  • mouse_entered ( )

当鼠标指针进入此对象的任何形状时触发。


  • mouse_exited ( )

当鼠标指针退出此对象的所有形状时发出。

属性说明

  • int collision_layer

Default

1

Setter

set_collision_layer(value)

Getter

get_collision_layer()

The physics layers this CollisionObject3D 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 CollisionObject3D 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_capture_on_drag

Default

false

Setter

set_capture_input_on_drag(value)

Getter

get_capture_input_on_drag()

如果trueCollisionObject 将在鼠标拖过其形状时继续接收输入事件。


  • bool input_ray_pickable

Default

true

Setter

set_ray_pickable(value)

Getter

is_ray_pickable()

如果trueCollisionObject 的形状将对 RayCast 做出反应。

方法说明

接收未处理的事件 InputEventposition 是鼠标指针在具有索引 shape_idx 的形状表面在世界空间中的位置,normal 是该点表面的法向量。连接到 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


  • Array get_shape_owners ( )

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


  • bool is_shape_owner_disabled ( int owner_id ) const

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


  • 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, Shape shape )

向形状所有者添加形状 Shape


  • void shape_owner_clear_shapes ( int owner_id )

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


  • Object shape_owner_get_owner ( int owner_id ) const

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


  • Shape shape_owner_get_shape ( int owner_id, int shape_id ) const

从给定的形状所有者返回具有给定 id 的形状 Shape


  • int shape_owner_get_shape_count ( int owner_id ) const

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


  • int shape_owner_get_shape_index ( int owner_id, int shape_id ) const

返回具有给定形状所有者的给定 id 的形状 Shape 的子索引。


返回形状所有者的Transform


  • 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_transform ( int owner_id, Transform transform )

设置给定形状所有者的Transform