Manual: About GameObject Nodes and Godot's Various Body Nodes

GameObject Node and Nodes Commonly Used as Root Nodes in Godot

In Godot, you can use various types of nodes as root nodes for game objects. However, currently, in ACTION GAME MAKER’s visual scripting, you must use the GameObject node as the root node.

The GameObject node in ACTION GAME MAKER is based on Godot’s CharacterBody2D and shares similar basic behaviors.

On the other hand, Godot also includes other nodes containing “Body” besides CharacterBody2D, such as:

  • StaticBody2D
  • AnimatableBody2D
  • RigidBody2D

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

So, what are the specific differences between GameObject (i.e., CharacterBody2D) and these other nodes?
This manual explains these differences.


Differences Between Nodes with “Body” in Their Names and Those Without

The biggest difference is:
Whether they can collide using the collision system with CollisionShape2D.

  • Body nodes can collide with each other or with tiles, allowing behaviors such as pushing, stopping upon collision, or standing on the ground.
  • These behaviors work correctly only when the Body node is the root node.

In contrast, Area2D cannot physically collide with Body nodes or tiles, but it can detect when a collision has occurred.

To visualize this:

  • Body nodes → Objects with physical presence
  • Area2D → Sensors without physical presence

Differences Among Each Body Node

CharacterBody2D (GameObject)

Primarily used for “characters” such as players or enemies.
It performs pseudo-physics processing, enabling behaviors like pushing or being pushed.
However, since it constantly calculates collision processing, the computational load is relatively high.


StaticBody2D

Used for “immovable” objects such as floors or walls.
It can collide but does not perform pseudo-physics processing, so it will not be pushed by the player.
This node has low computational load.


AnimatableBody2D

A variant of StaticBody2D, used for objects that “move but are unaffected by physics.”
It cannot be pushed by other Body nodes, but since it can move, it can be detected by collisions from CharacterBody2D.
Suitable for moving platforms, etc.


RigidBody2D

A node that performs Godot’s full physics processing.
By setting properties such as mass, friction, and bounciness, you can achieve more realistic physical behaviors.

However, when colliding with other Body nodes, the other Body nodes are treated as having “zero mass (technically infinite),” which may cause the RigidBody2D to be pushed one-sidedly.

This node has even higher computational load than CharacterBody2D.


Non-Body Nodes

Area2D Node

Cannot collide but can “detect” collisions.
For example, you cannot automatically stop upon colliding with a tile, but you can detect the tile and implement logic (e.g., setting velocity to 0 via script).

Since it does not perform pseudo-physics, it is lightweight and suitable for items, breakable blocks, etc.


Comparison Table of Nodes

Node Name Collision Processing Mutual Collision Physics Processing Computational Load
CharacterBody2D (GameObject) Yes Possible Pseudo-physics Medium to High
StaticBody2D Yes Not possible None Low
AnimatableBody2D Yes Not possible None Low to Medium
RigidBody2D Yes Possible Full Physics High
Area2D None Not possible None Low

Currently, ACTION GAME MAKER only supports GameObject (i.e., CharacterBody2D), but ongoing development aims to support lighter-weight nodes in the future.

2 Likes