PhysicsBulkBase

继承: ColliderObjectBase < Item3D < Item < Object

派生: CharacterBulk, PhysicalBone, RigidBulk, StaticBulk

受物理影响的3D场景对象的抽象基类。

描述

【物理体3D】是受物理影响的3D场景对象的抽象基类,所有3D物理体都继承自它。

警告:对于不均匀的比例,此节点可能不会按预期运行。建议在所有轴上保持其比例相同,并调整其碰撞形状。

属性

方法

void

add_collision_exception_with(body: Item)

bool

get_axis_lock(axis: BodyAxis) const

Array[PhysicsBulkBase]

get_collision_exceptions()

Vector3

get_gravity() const

KinematicCollision3D

move_and_collide(motion: Vector3, test_only: bool = false, safe_margin: float = 0.001, recovery_as_collision: bool = false, max_collisions: int = 1)

void

remove_collision_exception_with(body: Item)

void

set_axis_lock(axis: BodyAxis, lock: bool)

bool

test_move(from: Transform3D, motion: Vector3, collision: KinematicCollision3D = null, safe_margin: float = 0.001, recovery_as_collision: bool = false, max_collisions: int = 1)


属性说明

bool axis_lock_angular_x = false 🔗

锁定身体在X轴上的旋转。


bool axis_lock_angular_y = false 🔗

锁定身体在Y轴上的旋转。


bool axis_lock_angular_z = false 🔗

锁定身体在Z轴上的旋转。


bool axis_lock_linear_x = false 🔗

锁定身体在X轴上的直线运动。


bool axis_lock_linear_y = false 🔗

锁定身体在Y轴上的直线运动。


bool axis_lock_linear_z = false 🔗

锁定身体在Z轴上的直线运动。


方法说明

void add_collision_exception_with(body: Item) 🔗

将主体添加到该主体不能与之冲突的主体列表中。


bool get_axis_lock(axis: BodyAxis) const 🔗

如果指定的线性或旋转axis被锁定,则返回true


Array[PhysicsBulkBase] get_collision_exceptions() 🔗

返回作为此主体的冲突异常添加的节点数组。


Vector3 get_gravity() const 🔗

返回从所有可能影响身体的来源计算的重力向量,包括来自AreaTrigger节点的所有重力覆盖和全球世界重力。


KinematicCollision3D move_and_collide(motion: Vector3, test_only: bool = false, safe_margin: float = 0.001, recovery_as_collision: bool = false, max_collisions: int = 1) 🔗

沿着矢量motion移动物体。为了在Item.FixedUpdate()Item.Update()中与帧率无关,应使用delta计算motion

如果碰撞,物体将停止。返回一个KinematicCollision3D,其中包含有关停止碰撞时或沿运动触摸另一个物体时的信息。

如果test_onlytrue,则主体不会移动,但会给出潜在的冲突信息。

safe_margin是用于碰撞恢复的额外余量(有关详细信息,请参阅CharacterBulk.safe_margin)。

如果recovery_as_collisiontrue,则恢复阶段的任何脱失也被报告为冲突;例如,CharacterBulk用于改进地板捕捉期间的地板检测。

max_collisions允许检索多个冲突结果。


void remove_collision_exception_with(body: Item) 🔗

从主体不能与之冲突的主体列表中删除主体。


void set_axis_lock(axis: BodyAxis, lock: bool) 🔗

根据lock的值锁定或解锁指定的线性或旋转axis


bool test_move(from: Transform3D, motion: Vector3, collision: KinematicCollision3D = null, safe_margin: float = 0.001, recovery_as_collision: bool = false, max_collisions: int = 1) 🔗

在不移动物体的情况下检查碰撞。为了在Item.FxiedUpdate()Item.Update()中与帧率无关,应使用delta计算motion

将节点的位置、比例和旋转虚拟设置为给定的Transform3D,然后尝试沿着向量motion移动身体。如果碰撞会阻止身体沿着整个路径移动,则返回true

collisionKinematicCollision3D类型的可选对象,它包含关于当停止碰撞时或当沿着运动触摸另一个物体时的附加信息。

safe_margin是用于碰撞恢复的额外余量(有关详细信息,请参阅CharacterBulk.safe_margin)。

如果recovery_as_collisiontrue,则恢复阶段的任何脱落也报告为冲突;这对于检查主体是否会接触任何其他主体很有用。

max_collisions允许检索多个冲突结果。