CanvasItem
Inherits: Node< Object Inherited By: Control, Node2D Abstract base class for everything in 2D space. Description: Abstract base class for everything in 2D space. Canvas items are laid out in a t...
Are you using the modulate property to achieve transparency? Modulate propagates to all CanvasItem descendents of the node you set it on. You can instead try using the self_modulate property (docs.godotengine.org/en/stable/cl...), which doesn't affect child nodes.
15.01.2026 10:29
👍 1
🔁 0
💬 0
📌 0
Shading language
Introduction: Godot uses a shading language similar to GLSL ES 3.0. Most datatypes and functions are supported, and the few remaining ones will likely be added over time. If you are already familia...
You can actually use varyings to do that in godot! From docs.godotengine.org/en/stable/tu... :
"It's also possible to send data from fragment to light processors using varying keyword. To do so you can assign it in the fragment and later use it in the light function."
16.12.2025 15:36
👍 2
🔁 0
💬 1
📌 0
TextureProgressBar has circular fill modes, but the ProgressBar node doesn't.
12.12.2025 05:17
👍 0
🔁 0
💬 1
📌 0
You can implement either a ResourceFormatLoader script or an EditorImportPlugin to do this. The difference between them is that the loader loads a resource directly from the input file (so, a CSV in your case) while an importer generates a new internal resource file from it, which is then loaded.
12.12.2025 02:09
👍 2
🔁 0
💬 0
📌 0
This might also be a case sensitivity issue. Windows is, by default, case insensitive. So if you have a Scene.tscn, and try to load it from the editor as scene.tscn, it'll work, since the editor will ask windows for the file. On an exported project, the pck (res://) stuff is case sensitive, though.
10.12.2025 00:05
👍 1
🔁 0
💬 2
📌 0
In that case, you have access to the Container Sizing settings instead, which acts as hints to how the container will layout this node (the fill/shrink/expand settings)
05.12.2025 14:58
👍 1
🔁 0
💬 0
📌 0
They appear if Layout Mode is set to Anchors, and Anchor Preset to custom. Anchors allow you to set the size and position of a control node relative to its parent control. If a Control is a child of a Container, the container controls the node's layout, so you can't use those options.
05.12.2025 14:57
👍 1
🔁 0
💬 1
📌 0
You could probably simplify this to a plugin that adds a button on the toolbar to toggle the property on the viewport, so you can just use any AudioListerner3D normally (and avoid messing up the editor state too much).
30.11.2025 20:09
👍 1
🔁 0
💬 1
📌 0
@tool
extends AudioListener3D
@warning_ignore("unused_private_class_variable")
@export_tool_button("Toggle Current") var _make_current = toggle_current
func toggle_current() -> void:
var v := EditorInterface.get_edited_scene_root().get_parent() as SubViewport
if not is_instance_valid(v):
return
if is_current():
clear_current()
v.audio_listener_enable_3d = false
else:
make_current()
v.audio_listener_enable_3d = true
Ok, I figured it out. Enabling `audio_listener_enable_3d` on the parent node (a subviewport) of the edited scene root allows the listener to work. Note that this isn't any of the viewports returned by EditorInterface.get_editor_viewport_3d(). This script works for me.
30.11.2025 19:51
👍 2
🔁 0
💬 1
📌 0
Wait, I just noticed it was 3d, not 2d.
30.11.2025 18:57
👍 2
🔁 0
💬 1
📌 0
I just did a quick test, and simply enabling `Current` on an AudioListener2D node in the editor seems to use that as the listener, instead of the camera.
30.11.2025 18:53
👍 2
🔁 0
💬 1
📌 0
"The X axis is horizontal and points to the right, the Y axis is vertical and points up and the Z axis points towards the outside of the front face of the screen. In this system, coordinates behind the screen have negative Z values. "
Followed by an illustration of the coordinate systems, with the colors changed from the traditional ones. The X axis is green, the Y axis is blue and the Z axis is red (Traditionally, X is red, Y is green and Z is blue)
@freya.bsky.social I thought you might enjoy this gem from the Android sensors documentation (I was extremely confused reading the description and comparing it to the image before I actually looked at the axis labels)
23.11.2025 23:30
👍 5
🔁 0
💬 2
📌 0
Strictly speaking, the most basic node that has a 2d transform (and therefore can do 2d transform propagation) is CanvasItem, the parent class of both Node2D and Control. So, mixing Control nodes and Node2Ds works nicely (for example, to have a label following a character around, or a health bar)
01.11.2025 02:11
👍 1
🔁 0
💬 0
📌 0
(In some ways, having a Node2D as a child of a Node is similar to setting the top_level property on the Node2D to true)
01.11.2025 02:06
👍 1
🔁 0
💬 0
📌 0
So, if you have a Node2D -> Node -> Area2D scene, and the Area2D position is set to something like Vector2(15, 10) or whatever, it'll have that position in global space, regardless of what the Node2D's position is. if the middle Node was a Node2D, the Area2D's position would be relative to it.
01.11.2025 02:05
👍 1
🔁 0
💬 2
📌 0
Quick note: Area2D (and any other Node2D) do spawn properly when children of a base Node. However, because a base Node does not have a transform (position, etc), it does propagate transforms, and its children are in 'global space', and do not follow any Node2D parent the bare Node might have.
01.11.2025 02:03
👍 1
🔁 0
💬 1
📌 0