# Character Presence a character body is an ordinary kinematic body. ```{raw} html ▶ Run in browser ``` **Tags:** `physics` A ``CharacterBody3D`` is a ``BodyMode.KINEMATIC`` physics body with a swept ``move_and_slide`` helper, not a separate kind of thing. This scene puts every consequence of that on screen at once, so it can be checked by eye: - a per-frame **raycast** through the node-level ``self.physics.raycast`` reports the player by name when the ray crosses it; - an **Area3D trigger** fires ``body_entered`` / ``body_exited`` with the player node as the payload, and never pushes it; - a DYNAMIC **crate** falls and comes to rest on the player's head, then is left behind when the player walks off (a character does not carry riders); - a second **CharacterBody3D** blocks the player's path; - walking into the crate stops the player without shoving it, because this player sets ``push_factor = 0`` (the engine's own push is on by default) and owns the rule itself; the contacts are reported in ``collisions``; - a **ball** the player CAN push, because this scene asks for it: every blocking contact comes back in ``collisions``, so the player applies its own impulse to the bodies it lists as pushable. With the engine's push turned off, WHICH bodies move is entirely the game's decision, which is why the ball rolls while the crate, just as dynamic and never listed, stays exactly where it is; - a low **step** in front of the player is climbed rather than walked into, because ``step_height`` is set; anything taller than ``step_height`` blocks like a wall, and so does anything too steep to stand on -- walk this player into the ball from any angle and it never gets a foothold up the flank. Its collider is a box, and that is part of why: a flat-based character lands squarely on whatever it steps onto, while one with a rounded base mounts a step by perching on the edge, and that perch is harder to tell apart from a grip on a curved surface; - the player is authored exactly flush with the floor plane, the hardest starting pose for a swept character, and it moves freely from the first frame. Controls: WASD - move the player (walk into the ball to push it) Left/Right - orbit camera R - reset the crate, the ball and both characters Escape - quit Run (builtin): uv run python examples/features/physics/character_presence.py Run (Jolt): uv run python examples/features/physics/character_presence.py --jolt Headless check: uv run python examples/features/physics/character_presence.py --test Headless (Jolt): uv run python examples/features/physics/character_presence.py --test --jolt Web export: uv run simvx export web examples/features/physics/character_presence.py The two backends must behave identically: a character is a kinematic body on both, so the crate rests on the player and the blocker blocks it either way. ## Source ```{literalinclude} ../../examples/features/physics/character_presence.py :language: python :linenos: ```