KinematicBody split between new CharacterBody and PhysicsBody
PhysicsBody now has methods move_and_collide/test_move and needed properties for these methods: safe margin, locked axes (3D only). Moved collision_exceptions from StaticBody to PhysicsBody for 3D (same as 2D, and conforms to documentation). RigidBody doesn't have test_motion method anymore, it's now redundant with PhysicsBody.test_move.
This commit is contained in:
@ -19,6 +19,15 @@
|
||||
Adds a body to the list of bodies that this body can't collide with.
|
||||
</description>
|
||||
</method>
|
||||
<method name="get_axis_lock" qualifiers="const">
|
||||
<return type="bool">
|
||||
</return>
|
||||
<argument index="0" name="axis" type="int" enum="PhysicsServer3D.BodyAxis">
|
||||
</argument>
|
||||
<description>
|
||||
Returns [code]true[/code] if the specified linear or rotational [code]axis[/code] is locked.
|
||||
</description>
|
||||
</method>
|
||||
<method name="get_collision_exceptions">
|
||||
<return type="PhysicsBody3D[]">
|
||||
</return>
|
||||
@ -26,6 +35,22 @@
|
||||
Returns an array of nodes that were added as collision exceptions for this body.
|
||||
</description>
|
||||
</method>
|
||||
<method name="move_and_collide">
|
||||
<return type="KinematicCollision3D">
|
||||
</return>
|
||||
<argument index="0" name="rel_vec" type="Vector3">
|
||||
</argument>
|
||||
<argument index="1" name="infinite_inertia" type="bool" default="true">
|
||||
</argument>
|
||||
<argument index="2" name="exclude_raycast_shapes" type="bool" default="true">
|
||||
</argument>
|
||||
<argument index="3" name="test_only" type="bool" default="false">
|
||||
</argument>
|
||||
<description>
|
||||
Moves the body along the vector [code]rel_vec[/code]. The body will stop if it collides. Returns a [KinematicCollision3D], which contains information about the collision.
|
||||
If [code]test_only[/code] is [code]true[/code], the body does not move but the would-be collision information is given.
|
||||
</description>
|
||||
</method>
|
||||
<method name="remove_collision_exception_with">
|
||||
<return type="void">
|
||||
</return>
|
||||
@ -35,7 +60,62 @@
|
||||
Removes a body from the list of bodies that this body can't collide with.
|
||||
</description>
|
||||
</method>
|
||||
<method name="set_axis_lock">
|
||||
<return type="void">
|
||||
</return>
|
||||
<argument index="0" name="axis" type="int" enum="PhysicsServer3D.BodyAxis">
|
||||
</argument>
|
||||
<argument index="1" name="lock" type="bool">
|
||||
</argument>
|
||||
<description>
|
||||
Locks or unlocks the specified linear or rotational [code]axis[/code] depending on the value of [code]lock[/code].
|
||||
</description>
|
||||
</method>
|
||||
<method name="test_move">
|
||||
<return type="bool">
|
||||
</return>
|
||||
<argument index="0" name="from" type="Transform3D">
|
||||
</argument>
|
||||
<argument index="1" name="rel_vec" type="Vector3">
|
||||
</argument>
|
||||
<argument index="2" name="infinite_inertia" type="bool" default="true">
|
||||
</argument>
|
||||
<argument index="3" name="exclude_raycast_shapes" type="bool" default="true">
|
||||
</argument>
|
||||
<argument index="4" name="collision" type="KinematicCollision3D" default="null">
|
||||
</argument>
|
||||
<description>
|
||||
Checks for collisions without moving the body. Virtually sets the node's position, scale and rotation to that of the given [Transform3D], then tries to move the body along the vector [code]rel_vec[/code]. Returns [code]true[/code] if a collision would occur.
|
||||
[code]collision[/code] is an optional object of type [KinematicCollision3D], which contains additional information about the collision (should there be one).
|
||||
</description>
|
||||
</method>
|
||||
</methods>
|
||||
<members>
|
||||
<member name="axis_lock_angular_x" type="bool" setter="set_axis_lock" getter="get_axis_lock" default="false">
|
||||
Lock the body's rotation in the X axis.
|
||||
</member>
|
||||
<member name="axis_lock_angular_y" type="bool" setter="set_axis_lock" getter="get_axis_lock" default="false">
|
||||
Lock the body's rotation in the Y axis.
|
||||
</member>
|
||||
<member name="axis_lock_angular_z" type="bool" setter="set_axis_lock" getter="get_axis_lock" default="false">
|
||||
Lock the body's rotation in the Z axis.
|
||||
</member>
|
||||
<member name="axis_lock_linear_x" type="bool" setter="set_axis_lock" getter="get_axis_lock" default="false">
|
||||
Lock the body's linear movement in the X axis.
|
||||
</member>
|
||||
<member name="axis_lock_linear_y" type="bool" setter="set_axis_lock" getter="get_axis_lock" default="false">
|
||||
Lock the body's linear movement in the Y axis.
|
||||
</member>
|
||||
<member name="axis_lock_linear_z" type="bool" setter="set_axis_lock" getter="get_axis_lock" default="false">
|
||||
Lock the body's linear movement in the Z axis.
|
||||
</member>
|
||||
<member name="collision/safe_margin" type="float" setter="set_safe_margin" getter="get_safe_margin" default="0.001">
|
||||
Extra margin used for collision recovery in motion functions (see [method move_and_collide], [method CharacterBody3D.move_and_slide], [method CharacterBody3D.move_and_slide_with_snap]).
|
||||
If the body is at least this close to another body, it will consider them to be colliding and will be pushed away before performing the actual motion.
|
||||
A higher value means it's more flexible for detecting collision, which helps with consistently detecting walls and floors.
|
||||
A lower value forces the collision algorithm to use more exact detection, so it can be used in cases that specifically require precision, e.g at very low scale to avoid visible jittering, or for stability with a stack of character bodies.
|
||||
</member>
|
||||
</members>
|
||||
<constants>
|
||||
</constants>
|
||||
</class>
|
||||
|
||||
Reference in New Issue
Block a user