Attention | Topic was automatically imported from the old Question2Answer platform. | |
Asked By | pion |
I am making a 2D sidescrolling game. In the main scene, I have a KinematicBody2D called Player as my player and in a second scene I have an Area2D as my bullet called Bullet.
Shooting the bullet and deleting it when it goes offscreen works, but I tried adding a second kinematic body with a collision body and printing “Entered: [body name]” onto the console. However, when starting the game it prints “Entered: Player” and when shooting into the second KinematicBody2D, it does nothing.
Bullet function for collision detection:
func _on_Bullet_body_entered(body):
print("Entered: ", body.name)
iirc body entered only signals when there’s a SomethingBody entering
there should be an AreaEntered or something similar for areas
1234ab | 2022-01-05 19:34
I tried this
func _on_Bullet_area_entered(area):
print("Test")
In the script for the bullet, still doesnt work though. Am I doing something wrong with the collision layers or is it not working because the Bullet scene is being instanced? Sorry if that doesnt make sense, I am a beginner (And yes I indented the function correctly, it just doesnt display here)
pion | 2022-01-05 21:24
hmmm, did you connect the signal? it should show something like a green arrow left to the function, if it is connected
there should be this Node tab on the left-top side where you can connect it
Using signals — Godot Engine (stable) documentation in English
acually the next doc seems to be kindof related too, it may be worth looking at it if you haven’t already https://docs.godotengine.org/en/stable/getting_started/step_by_step/your_first_game.html#doc-your-first-game
also, I dont know how people usually implement bullets, but I’m not sure an Area is the best, maybe they should be Bodies too (?)
1234ab | 2022-01-06 18:56
If the bullet scene is instanced at runtime via code, it’s not going to automatically connect signals to your kinematic body, you have to do that explicitly.
skysphr | 2022-01-06 19:08