|Attention||Topic was automatically imported from the old Question2Answer platform.|
I am attempting my first project which is started from the 2D tutorial. I added a simple new_game function, but after dying and restarting for some reason the CollisionShape2D for the player is still disabled and Mobs can’t kill the player the 2nd time around.
hide() # Player disappears after being hit. emit_signal("player_killed") print_debug("hit and dying") #defer so it's not disabled in the middle of a collision processing $CollisionShape2D.set_deferred("disabled", true)
func start(pos: Vector2) -> void: position = pos $CollisionShape2D.set_deferred("disabled", false) show()
Tried changing it from deferred to setting it directly, but got a “Can’t change this state while flushing queries” error in logs.
func restart(): get_tree().call_group("mobs", "queue_free") while($Player/CollisionShape2D.disabled): print_debug("waiting I guess..2") new_game()
It never prints the debug statement there.
But after restart in the ‘_process’ method in Player, I added a ‘print_debug’ statement if $CollisionShape2D.disabled to find that it was somehow disabled when playing after restarting.
The collision works normally in the game before the restart.
i also got issue with the
disabled properties in the past, i eventually managed to disable the collision by resetting the collision/mask level of the body
Andrea | 2021-08-29 10:47