Hugo Locurcio 51fadd795c Link C# version in Squash the Creeps demo README (#1274) 1 month ago
..
addons 520b4a7870 Improve style in many demos (#1263) 2 months ago
assets 520b4a7870 Improve style in many demos (#1263) 2 months ago
screenshots fcc7d5c723 Optimize PNG images using oxipng 5 years ago
README.md 51fadd795c Link C# version in Squash the Creeps demo README (#1274) 1 month ago
icon.webp 63d1cd9a60 Use 128×128 WebP icons for all demos (#885) 2 years ago
icon.webp.import 14fcc0e133 Update all demo projects for Godot 4.5 and use path-deterministic UIDs (#1258) 2 months ago
project.godot 14fcc0e133 Update all demo projects for Godot 4.5 and use path-deterministic UIDs (#1258) 2 months ago

README.md

2.5D Demo Project with GDScript

This demo project shows a way to create a 2.5D game in Godot by mixing 2D and 3D nodes. It also adds a 2.5D editor viewport for easily editing 2.5D levels.

Language: GDScript

Renderer: Compatibility

[!NOTE]

There is a C# version available here.

Check out this demo on the asset library: https://godotengine.org/asset-library/asset/2783

How does it work?

Custom node types are added in a Godot plugin to allow 2.5D objects. Node25D serves as the base for all 2.5D objects. Its first child must be a 3D Spatial, which is used to calculate its position. Then, add a 2D Sprite (or similar) to display the object.

Inside of Node25D, a 2.5D transformation matrix made of three Vector2s is used to calculate the 2D position from the 3D position. For getting a 3D position, this project uses CharacterBody and StaticBody (3D), but these only exist for math - the camera is 2D and all sprites are 2D. You are able to use any Spatial node for math.

Several view modes are implemented, including top down, front side, 45 degree, isometric, and two oblique modes. To implement a different view angle, all you need to do is create a new set of basis vectors in Node25D, use it on all instances, and of course create sprites to display that object in 2D.

The plugin also adds YSort25D to sort Node25D nodes, and ShadowMath25D for calculating a shadow (a simple CharacterBody that tries to cast downward).

Screenshots

Forty Five Degrees

Isometric

Oblique Z

Oblique Y

Front Side

Cube

2.5D Editor Viewport

Music License

assets/mr_mrs_robot.ogg Copyright © circa 2008 Juan Linietsky, CC-BY: Attribution.