[Help] Interaction/dialogue system not working

Hello everyone, I’m seeking assistance with an issue I’m encountering while implementing an interaction system in my Godot game. I’m following the provided tutorial and utilizing Nathan Hoad’s “Dialogue Manager” plugin, but despite adhering to the instructions meticulously, I’m unable to achieve the desired functionality.

To provide further context, I’ve attached my current code snippets for both the character and the interactable area. These codes closely resemble the ones presented in the tutorial, with only minor modifications.

Character:

func _physics_process(delta: float) -> void:
	if Input.is_action_just_pressed("confirma"):
		var actionables = actionable_finder.get_overlapping_areas()
		if actionables.size() > 0:
			actionables[0].action()
			return

“confirma” is spacebar, “confirm”. I’ve tried “ui_confirm” too, but the results are literally the same, so whatever.

Actionable area:

extends Area2D

@export var dialogue_resource: DialogueResource
@export var dialogue_start: String = "start"

func action() -> void:
	DialogueManager.show_example_dialogue_baloon(dialogue_resource, dialogue_start)

Ps: The breakpoint doesn’t work anywhere on the Area2D/Actionable area.

I’ve thoroughly inspected the collision detection mechanism and scrutinized the code using breakpoints, yet the issue persists. I’m perplexed by this behavior, especially considering that both the plugin and Godot are up to date. During my investigation, I stumbled upon an oddity:

The interaction system FUNCTIONS CORRECTLY beyond this point:
image


However, it FAILS to operate below this point:
image
(Though it don’t crash or give any error message, just don’t work. Like, nothing happens).

It’s very strange. When I use code to force the file to execute, it works perfectly. Here’s the code to make it in the “forced” way:

func _physics_process(delta: float) -> void:
	if Input.is_action_just_pressed("confirma"):
		DialogueManager.show_dialogue_balloon(load("res://Dialogue/main.dialogue"), "start")
		return


By the way, I just double-checked, and I did add the dialog file to the Area2D node. So this is even more confusing. Collisions work, inputs work, but I’m still not getting any responses, apart from forcing the response.
image

I would greatly appreciate any insights or guidance that could help me identify and resolve this problem. Thank you in advance for your assistance.

Have you confirmed that the actionables array does indeed contain the correct Area2D?

Well… There’s only one Area2D node in the entire project.

What version of Godot and what version of DialogueManager are you using?

The Godot version is v4.2.2-stable, and the Dialogue Manager version is 2.39.1 (I think, it’s at the right upper corner, so…).
image

I have no clue why you didn’t get an error, but I did when I ran your code

show_example_dialogue_baloon

you spelled it wrong, it is spelled “balloon”

Oh! Thank you, but it seems that this is not the problem, since nothing has changed. It’s strange that nothing appeared in the console, even though it was written incorrectly.

uhhhh restart godot?

No response. It looks like I’m going to have to start the project over from scratch. It’s not too big, so maybe I can find the error that way.

1 Like

Nothing out of the ordinary happened (I didn’t use his repository, but I’ll test the ‘sample’ project he left on GitHub later). I’ll wait to see if anyone has an answer while I work on other things. Maybe it’s an update that made the system work differently. In the worst-case scenario, the solution is to find an alternative plugin or talk to Nathan directly on Discord. I really don’t want to give up on the plugin, as it seems very good and promising. Well, it’s not the end of the world yet, there’s still a lot to try.

The only difference between my project and his seems to be the compatibility mode. Could this be causing the issue?

Hello! I’m also using Dialogue Manager and was looking to fix something else when I stumbled across this. I’m not sure if you figured it out yet but is there a reason you put:

if Input.is_action_just_pressed("confirma"):
	var actionables = actionable_finder.get_overlapping_areas()
	if actionables.size() > 0:
		actionables[0].action()
		return

under “func _physics_process” instead of “func _unhandled_input” like he does in the video?

Not sure if that helps you or not but maybe that caused the problem? Sorry if this doesn’t make sense. This is my first time responding to a question on here!

1 Like

That’s probably it, thank you for your willingness to help! I’m going through a very difficult time and have put the project on hold for now, but I’ll be testing it soon. Thank you again for your attention!