Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CharacterBody3D #94

Closed
80 of 84 tasks
Tracked by #117
mihe opened this issue Dec 22, 2022 · 1 comment
Closed
80 of 84 tasks
Tracked by #117

CharacterBody3D #94

mihe opened this issue Dec 22, 2022 · 1 comment
Labels
enhancement New feature or request meta Concerning other issues topic:runtime Concerning runtime behavior (or its source code)

Comments

@mihe
Copy link
Contributor

mihe commented Dec 22, 2022

Description

This issue tracks the progress of implementing the functionality of Godot's CharacterBody3D node type. Below you'll find all user-facing properties, methods and signals, including ones inherited from relevant node types. If you notice any missing from this list, please leave a comment down below.

Note that most of the functionality for CharacterBody3D is implemented on top of the physics server, within Godot itself, and doesn't rely on much bespoke functionality from the physics server, outside of what is already needed for things like RigidBody3D. So while this list may look daunting, most of it should work with little or no effort, assuming the things it relies on does as well.

Status

  • Not supported
  • Not started
  • Partial (not functional)
  • Partial (functional) 👈
  • Done (as much as it can be)
  • Done (completely)

Links

Documentation: CharacterBody3D
Inherits: PhysicsBody3D, CollisionObject3D, Node3D

Legend

  • 🚧 indicates a partial, incomplete or broken implementation.
  • 🛑 indicates that it's blocked or incompatible with Jolt in some way.

Properties

Uncategorized

  • Motion Mode (motion_mode)
    • Grounded (MOTION_MODE_GROUNDED)
    • Floating (MOTION_MODE_FLOATING)
  • Up Direction (up_direction)
  • Slide on Ceiling (slide_on_ceiling)
  • Wall Min Slide Angle (wall_min_slide_angle)
  • Max Slides (max_slides)
    • Only available through scripts?

Floor

  • Stop on Slope (floor_stop_on_slope)
  • Constant Speed (floor_constant_speed)
  • Block on Wall (floor_block_on_wall)
  • Max Angle (floor_max_angle)
  • Snap Length (floor_snap_length)

Moving Platform

  • On Leave (platform_on_leave)
  • Floor Layers (platform_floor_layers)
  • Wall Layers (platform_wall_layers)

Collision

  • Safe Margin (safe_margin)

Properties (PhysicsBody3D)

Axis Lock

  • Linear X (BODY_AXIS_LINEAR_X)
  • Linear Y (BODY_AXIS_LINEAR_Y)
  • Linear Z (BODY_AXIS_LINEAR_Z)
  • Angular X (BODY_AXIS_ANGULAR_X)
  • Angular Y (BODY_AXIS_ANGULAR_Y)
  • Angular Z (BODY_AXIS_ANGULAR_Z)

Properties (CollisionObject3D)

Uncategorized

  • Disable Mode (disable_mode)
    • Remove (DISABLE_MODE_REMOVE)
    • Static (DISABLE_MODE_MAKE_STATIC)
    • Active (DISABLE_MODE_KEEP_ACTIVE)

Collision

  • Layer (collision_layer)
  • Mask (collision_mask)
  • Priority (collision_priority)

Input

  • 🚧 Ray Pickable (input_ray_pickable)
    • Technically implemented, but hardcoded to true until Godot 4.1
  • Capture on Drag (input_capture_on_drag)

Properties (Node3D)

Transform

  • Position (position)
  • Rotation (rotation)
  • Scale (scale)

Methods

  • get_floor_angle
  • get_floor_normal
  • get_last_motion
  • get_last_slide_collision
  • get_platform_velocity
  • get_position_delta
  • get_real_velocity
  • get_slide_collision
  • get_slide_collision_count
  • get_wall_normal
  • is_on_ceiling
  • is_on_ceiling_only
  • is_on_floor
  • is_on_floor_only
  • is_on_wall
  • is_on_wall_only
  • 🚧 move_and_slide
    • Works, but recovery_as_collision is hardcoded to true until Godot 4.1

Methods (PhysicsBody3D)

  • add_collision_exception_with
  • remove_collision_exception_with
  • get_axis_lock
  • get_collision_exception
  • 🚧 move_and_collide
    • Works, but recovery_as_collision is hardcoded to true until Godot 4.1
  • set_axis_lock
  • 🚧 test_move
    • Works, but recovery_as_collision is hardcoded to true until Godot 4.1

Methods (CollisionObject3D)

  • _input_event
  • _mouse_enter
  • _mouse_exit
  • create_shape_owner
  • get_collision_layer_value
  • get_collision_mask_value
  • get_rid
  • get_shape_owners
  • is_shape_owner_disabled
  • remove_shape_owner
  • set_collision_layer_value
  • set_collision_mask_value
  • shape_find_owner
  • shape_owner_add_shape
  • shape_owner_clear_shapes
  • shape_owner_get_owner
  • shape_owner_get_shape
  • shape_owner_get_shape_count
  • shape_owner_get_shape_index
  • shape_owner_get_transform
  • shape_owner_remove_shape
  • shape_owner_set_disabled
  • shape_owner_set_transform

Signals (CollisionObject3D)

  • input_event
  • mouse_entered
  • mouse_exited
@mihe mihe added enhancement New feature or request topic:runtime Concerning runtime behavior (or its source code) meta Concerning other issues labels Dec 22, 2022
@mihe
Copy link
Contributor Author

mihe commented May 18, 2023

This tracking issue has served its purpose and will now be closed. 🫡

Any remaining work has had new issues created for it.

@mihe mihe closed this as completed May 18, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request meta Concerning other issues topic:runtime Concerning runtime behavior (or its source code)
Projects
None yet
Development

No branches or pull requests

1 participant