Up to date

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

CharacterBody2D

Inherits: PhysicsBody2D < CollisionObject2D < Node2D < CanvasItem < Node < Object

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

Description

CharacterBody2D 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 PhysicsBody2D.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, AnimatableBody2D 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

1.0

bool

floor_stop_on_slope

true

int

max_slides

4

MotionMode

motion_mode

0

int

platform_floor_layers

4294967295

PlatformOnLeave

platform_on_leave

0

int

platform_wall_layers

0

float

safe_margin

0.08

bool

slide_on_ceiling

true

Vector2

up_direction

Vector2(0, -1)

Vector2

velocity

Vector2(0, 0)

float

wall_min_slide_angle

0.261799

Methods

void

apply_floor_snap ( )

float

get_floor_angle ( Vector2 up_direction=Vector2(0, -1) ) const

Vector2

get_floor_normal ( ) const

Vector2

get_last_motion ( ) const

KinematicCollision2D

get_last_slide_collision ( )

Vector2

get_platform_velocity ( ) const

Vector2

get_position_delta ( ) const

Vector2

get_real_velocity ( ) const

KinematicCollision2D

get_slide_collision ( int slide_idx )

int

get_slide_collision_count ( ) const

Vector2

get_wall_normal