Godot Version
4.2
Question
I followed the current 2D tutorial to make the simple “dodge the creeps” game.
To learn and expand my skills, i added a bomb (also instantiated) with which i can kill the mobs.
All this works fine so far and only the mobs hit despawn properly.
I now want the killed Mobs to send a signal which i can listen for in my Main Scene. I do NOT want to add the Mobs as a child of the scene via editor, since a) there is many of them at the same time, b) i dont want a mob to spawn when loading the game and c) i dont think that would even help with this issue.
I have searched for a few hours now and i just cant make the connect() function work.
My mob.gd looks like this, the _on_hit_by_explosion() function is being called correctly, so the signal should be emitted.
extends RigidBody2D
signal killed
func _on_hit_by_explosion():
killed.emit()
queue_free()
#I deleted the other code for this question, it is equivalent to the tutorial
The important parts of my main.gd look like this:
@export var mob_scene: PackedScene
func _on_mob_timer_timeout():
var mob = mob_scene.instantiate()
# a bunch of initial values get declared here, deleted for this question
add_child(mob)
#the following line is what i am struggling with
mob.connect("killed", self._on_mob_killed())
func _on_mob_killed():
# do more things after signal was detected, e.g. increase a kill counter
#even more stuff not needed here
I tried MANY different ways of connecting the signal “killed” to the function _on_mob_killed(), but i just cant get it to work. This is just the latest attempt i made.
Any help is appreciated