Manual: GameObject Nodes and Common Root Nodes Used in Godot

GameObject Nodes and Common Root Nodes Used in Godot

In Godot, various types of nodes can be used as the root node of game objects.
However, in the current version of ACTION GAME MAKER, visual scripts must use the GameObject node as the root.

The GameObject node in ACTION GAME MAKER is based on Godot’s CharacterBody2D, and therefore shares most of its core behavior.

Aside from CharacterBody2D, Godot also provides several other body-type nodes:

  • StaticBody2D
  • AnimatableBody2D
  • RigidBody2D

In some cases, Area2D may also be used as a root node.

So what exactly is the difference between GameObject (CharacterBody2D) and these other nodes?
This document explains these distinctions.


Differences Between “Body” Nodes and Non-Body Nodes

The primary difference is:

“Whether or not the node can physically collide using the CollisionShape2D-based collision system.”

  • Body nodes can collide with each other and with tiles, allowing them to push, block, or stand on each other.
  • These behaviors only work correctly when a Body node is used as the root node.

In contrast, Area2D cannot physically collide, but it can detect when something overlaps with it.

In simple terms:

  • Body Nodes → Physical objects with actual presence
  • Area2D → Invisible sensors with no physical presence

Differences Between Each Body Node

CharacterBody2D (GameObject)

Used primarily for characters such as players and enemies.
It performs pseudo-physics calculations that allow it to push and collide with other bodies.
Because it continuously processes collision logic, it is computationally heavier.


StaticBody2D

Used for objects that do not move, such as floors and walls.
It can be collided with, but since it does not perform pseudo-physics, it cannot be pushed.
This node is very lightweight.


AnimatableBody2D

A variant of StaticBody2D designed for objects that can move but do not react to physics.
They cannot be pushed by other bodies, but since they can move, CharacterBody2D and RigidBody2D can detect collisions with them.
Useful for moving platforms.


RigidBody2D

Provides full, real physics simulation.
With properties such as mass, friction, and bounce, you can create realistic interactions such as heavy objects pushing light ones.

However, when colliding with other Body nodes, those nodes are treated as having “no mass (or infinite mass),” meaning the RigidBody2D may be pushed around unilaterally.

This is more performance-heavy than CharacterBody2D.


Non-Body Nodes

Area2D

As mentioned earlier, Area2D cannot collide physically but can detect overlaps.
For example, Area2D cannot automatically stop when touching a tile, but you can script it to stop by setting its vertical velocity to zero when it detects a tile.

Since it performs no pseudo-physics, it is very lightweight, making it suitable for items, breakable blocks, and similar objects.


Comparison Table

Node Collision Mutual Collision Physics Performance
CharacterBody2D (GameObject) Yes Yes Pseudo Medium–High
StaticBody2D Yes No None Low
AnimatableBody2D Yes No None Low–Medium
RigidBody2D Yes Yes Full Physics High
Area2D No No None Low

Currently, ACTION GAME MAKER supports only CharacterBody2D-based GameObject nodes for its visual scripting system.
Support for lighter nodes is planned for future updates.