#StackBounty: #collision-detection #godot Godot 3.2 Bomb explosion doesn't affect player or npc

Bounty: 50

I finished the Godot 2D game tutorial Dodge the Creeps, and i’m adding a few additional features to reinforce the things learned and make more interesting the base game.

Basically i added a Scene with a area2d as root node with a collisionShape2d,a 2 timers for the Bomb scene.

The bomb appears randomlly in the main scene, for a few seconds is supposed to be ticking and then explodes.

My problem is that neither the player or the creeps( the npc enemies) are being removed from the scene.
They don’t interact at all,

This is the code for the Bomb.tscn scene:

extends Node

func _ready():
    # Area collison disabled until animation finishes
    $CollisionShape2D.disabled = true
    # Bomb ticking animation
    $AnimatedSprite.animation = "bomb"
    # Until BombTimer times out we change animation and activate collisionArea

func _on_BombTimer_timeout():
    # Change animation sprite
    $AnimatedSprite.animation = "explosion"
    # Enable Collision area
    $CollisionShape2D.disabled = false
    # Start timer to remove bomb object

func _on_RemoveTimer_timeout():

The code for the creep/mob when hit by the bomb:

func _on_Mob_body_shape_entered(body_id, body, body_shape, local_shape):
     $CollisionShape2D.set_deferred("disabled", true)

The code for collision detection for the player when is hit:

func _on_Player_body_entered(body):
     hide()  # Player disappears after being hit
     $CollisionShape2D.set_deferred("disabled", true)

If the creep/mob touches the player the game is over, but if the bombs explodes nothing happens.
What i’m missing in the code?

Get this bounty!!!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.