Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

PhysicsDirectBodyState3D

继承: Object

派生: PhysicsDirectBodyState3DExtension

提供对 PhysicsServer3D 中物理体的直接访问。

描述

提供对 PhysicsServer3D 中物理体的直接访问,从而安全地更改物理属性。该对象会在 RigidBody3D 的直接状态回调中传递,目的是为了改变物体的直接状态。见 RigidBody3D._integrate_forces

教程

属性

Vector3

angular_velocity

Vector3

center_of_mass

Vector3

center_of_mass_local

Vector3

inverse_inertia

Basis

inverse_inertia_tensor

float

inverse_mass

Vector3

linear_velocity

Basis

principal_inertia_axes

bool

sleeping

float

step

float

total_angular_damp

Vector3

total_gravity

float

total_linear_damp

Transform3D

transform

方法

void

add_constant_central_force ( Vector3 force=Vector3(0, 0, 0) )

void

add_constant_force ( Vector3 force, Vector3 position=Vector3(0, 0, 0) )

void

add_constant_torque ( Vector3 torque )

void

apply_central_force ( Vector3 force=Vector3(0, 0, 0) )

void

apply_central_impulse ( Vector3 impulse=Vector3(0, 0, 0) )

void

apply_force ( Vector3 force, Vector3 position=Vector3(0, 0, 0) )

void

apply_impulse ( Vector3 impulse, Vector3 position=Vector3(0, 0, 0) )

void

apply_torque ( Vector3 torque )

void

apply_torque_impulse ( Vector3 impulse )

Vector3

get_constant_force ( ) const

Vector3

get_constant_torque ( ) const

RID

get_contact_collider ( int contact_idx ) const

int

get_contact_collider_id ( int contact_idx ) const

Object

get_contact_collider_object ( int contact_idx ) const

Vector3

get_contact_collider_position ( int contact_idx ) const

int

get_contact_collider_shape ( int contact_idx ) const

Vector3

get_contact_collider_velocity_at_position ( int contact_idx ) const

int

get_contact_count ( ) const

Vector3

get_contact_impulse ( int contact_idx ) const

Vector3

get_contact_local_normal ( int contact_idx ) const

Vector3

get_contact_local_position ( int contact_idx ) const

int

get_contact_local_shape ( int contact_idx ) const

Vector3

get_contact_local_velocity_at_position ( int contact_idx ) const

PhysicsDirectSpaceState3D

get_space_state ( )

Vector3

get_velocity_at_local_position ( Vector3 local_position ) const

void

integrate_forces ( )

void

set_constant_force ( Vector3 force )

void

set_constant_torque ( Vector3 torque )


属性说明

Vector3 angular_velocity

  • void set_angular_velocity ( Vector3 value )

  • Vector3 get_angular_velocity ( )

物体的旋转速度,单位为弧度每秒。


Vector3 center_of_mass

该物体质心的位置,相对于该物体的中心,使用全局坐标系。


Vector3 center_of_mass_local

  • Vector3 get_center_of_mass_local ( )

该物体质心的位置,使用该物体的局部坐标系。


Vector3 inverse_inertia

物体惯性的倒数。


Basis inverse_inertia_tensor

  • Basis get_inverse_inertia_tensor ( )

该物体惯性张量的倒数。


float inverse_mass

  • float get_inverse_mass ( )

物体质量的倒数。


Vector3 linear_velocity

  • void set_linear_velocity ( Vector3 value )

  • Vector3 get_linear_velocity ( )

物体的线速度,单位为单位每秒。


Basis principal_inertia_axes

  • Basis get_principal_inertia_axes ( )

目前没有这个属性的描述。请帮我们贡献一个


bool sleeping

  • void set_sleep_state ( bool value )

  • bool is_sleeping ( )

如果为 true,则该物体当前处于睡眠状态(不活动)。


float step

用于模拟的时间步长(delta)。


float total_angular_damp

  • float get_total_angular_damp ( )

物体停止转动的速度,如果没有任何其他力使它运动。


Vector3 total_gravity

这个物体上的总重力向量。


float total_linear_damp

  • float get_total_linear_damp ( )

物体停止运动的速率,如果没有任何其他力使它运动。


Transform3D transform

物体的变换矩阵。


方法说明

void add_constant_central_force ( Vector3 force=Vector3(0, 0, 0) )

在不影响旋转的情况下,添加一个恒定的定向力,该力会随着时间的推移而持续施加,直到使用 constant_force = Vector3(0, 0, 0) 清除。

这相当于在物体的质心处,使用 add_constant_force


void add_constant_force ( Vector3 force, Vector3 position=Vector3(0, 0, 0) )

向实体添加一个恒定的定位力,持续施加,直到用 constant_force = Vector3(0, 0, 0) 清除。

position 是在全局坐标中距实体原点的偏移量。


void add_constant_torque ( Vector3 torque )

在不影响位置的情况下,添加一个恒定的旋转力,该力会随着时间的推移而持续施加,直到使用 constant_torque = Vector3(0, 0, 0) 清除。


void apply_central_force ( Vector3 force=Vector3(0, 0, 0) )

施加一个不影响旋转的定向力。该力是时间相关的,意味着每次物理更新都会施加。

这相当于在物体的质心处,使用 apply_force


void apply_central_impulse ( Vector3 impulse=Vector3(0, 0, 0) )

施加一个不影响的旋转定向冲量。

冲量与时间无关!每帧应用一个冲量,会产生一个依赖于帧速率的力。出于这个原因,它应该只在模拟一次性影响时使用(否则使用 “_force”函数)。

这相当于在物体的质心处,使用 apply_impulse


void apply_force ( Vector3 force, Vector3 position=Vector3(0, 0, 0) )

对实体施加一个定位力。力是时间相关的,意味着每次物理更新都会被施加。

position 是在全局坐标中距实体原点的偏移量。


void apply_impulse ( Vector3 impulse, Vector3 position=Vector3(0, 0, 0) )

向实体施加一个定位冲量。

冲量是时间无关的!每帧施加一个冲量将产生一个依赖于帧速率的力。出于这个原因,它应该只在模拟一次性影响时使用(否则使用“_force”函数)。

position 是在全局坐标中距实体原点的偏移量。


void apply_torque ( Vector3 torque )

在不影响位置的情况下,施加一个旋转力。该力是与时间相关的,这意味着每次物理更新时都会被施加。

注意:inverse_inertia 是该函数生效所必需的。要拥有 inverse_inertia,一个活动的 CollisionShape3D 必须是该节点的子节点,或者可以手动设置 inverse_inertia


void apply_torque_impulse ( Vector3 impulse )

在不影响位置的情况下,向实体施加一个旋转冲量。

冲量是时间无关的!每帧施加一个冲量将产生一个依赖于帧速率的力。出于这个原因,它应该只在模拟一次性影响时使用(否则使用“_force”函数)。

注意:inverse_inertia 是生效所必需的。要拥有 inverse_inertia,活动的 CollisionShape3D 必须是该节点的子节点,或者可以手动设置 inverse_inertia


Vector3 get_constant_force ( ) const

返回在每次物理更新期间,施加在该物体上的总恒定位置力。

add_constant_forceadd_constant_central_force


Vector3 get_constant_torque ( ) const

返回在每次物理更新期间,施加在该物体上的总恒定旋转力。

add_constant_torque


RID get_contact_collider ( int contact_idx ) const

返回该碰撞体的 RID


int get_contact_collider_id ( int contact_idx ) const

返回该碰撞体的对象 id。


Object get_contact_collider_object ( int contact_idx ) const

返回碰撞对象。


Vector3 get_contact_collider_position ( int contact_idx ) const

返回该碰撞体上接触点的位置,使用全局坐标系。


int get_contact_collider_shape ( int contact_idx ) const

返回该碰撞体的形状索引。


Vector3 get_contact_collider_velocity_at_position ( int contact_idx ) const

返回该碰撞体接触点处的线速度向量。


int get_contact_count ( ) const

返回这个物体与其他物体的接触次数。

注意:默认情况下,除非物体被设为监视接触,否则会返回 0。见 RigidBody3D.contact_monitor


Vector3 get_contact_impulse ( int contact_idx ) const

由接触产生的冲量。


Vector3 get_contact_local_normal ( int contact_idx ) const

返回接触点处的局部法线。


Vector3 get_contact_local_position ( int contact_idx ) const

返回该物体上接触点的位置,使用全局坐标系。


int get_contact_local_shape ( int contact_idx ) const

返回碰撞的局部坐标系下的形状索引。


Vector3 get_contact_local_velocity_at_position ( int contact_idx ) const

返回该物体上接触点处的线速度向量。


PhysicsDirectSpaceState3D get_space_state ( )

返回空间的当前状态,这对查询很有用。


Vector3 get_velocity_at_local_position ( Vector3 local_position ) const

返回给定相对位置的物体速度,包括平移和旋转。


void integrate_forces ( )

调用内置的力集成代码。


void set_constant_force ( Vector3 force )

设置在每次物理更新期间,施加在该物体上的总恒定位置力。

add_constant_forceadd_constant_central_force


void set_constant_torque ( Vector3 torque )

设置在每次物理更新期间,施加在该物体上的总恒定旋转力。

add_constant_torque