Up to date

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

CharacterBody3D

Inherits: PhysicsBody3D < CollisionObject3D < Node3D < Node < Object

A 3D physics body specialized for characters moved by script.

Description

CharacterBody3D is a specialized class for physics bodies that are meant to be user-controlled. They are not affected by physics at all, but they affect other physics bodies in their path. They are mainly used to provide high-level API to move objects with wall and slope detection (move_and_slide method) in addition to the general collision detection provided by PhysicsBody3D.move_and_collide. This makes it useful for highly configurable physics bodies that must move in specific ways and collide with the world, as is often the case with user-controlled characters.

For game objects that don't require complex movement or collision detection, such as moving platforms, AnimatableBody3D is simpler to configure.

Tutorials

Properties

bool

floor_block_on_wall

true

bool

floor_constant_speed

false

float

floor_max_angle

0.785398

float

floor_snap_length

0.1

bool

floor_stop_on_slope

true

int

max_slides

6

MotionMode

motion_mode

0

int

platform_floor_layers

4294967295

PlatformOnLeave

platform_on_leave

0

int

platform_wall_layers

0

float

safe_margin

0.001

bool

slide_on_ceiling

true

Vector3

up_direction

Vector3(0, 1, 0)

Vector3

velocity

Vector3(0, 0, 0)

float

wall_min_slide_angle

0.261799

Methods

void

apply_floor_snap ( )

float

get_floor_angle ( Vector3 up_direction=Vector3(0, 1, 0) ) const

Vector3

get_floor_normal ( ) const

Vector3

get_last_motion ( ) const

KinematicCollision3D

get_last_slide_collision ( )

Vector3

get_platform_angular_velocity ( ) const

Vector3

get_platform_velocity ( ) const

Vector3

get_position_delta ( ) const

Vector3

get_real_velocity ( ) const

KinematicCollision3D

get_slide_collision ( int slide_idx )

int

get_slide_collision_count ( ) const

Vector3

get_wall_normal ( ) const

bool

is_on_ceiling ( ) const

bool

is_on_ceiling_only ( ) const

bool

is_on_floor ( ) const