Topic was automatically imported from the old Question2Answer platform.
Asked By
treetertot
I have two KinematicBody2D objects (a player and an enemy), and I want the player to detect if the colliding object is the enemy or a wall. I have seen a solution with areas, but they don’t collide with the wall.
Kinematic bodies are probably not the way to go here - as I understand it, their whole deal is being non-collided.
I would change the type of the enemy to RigidBody2D - if you don’t want it to rotate, you can change the mode to “character”
Once you’ve got a rigid body, you can enable contact reporting (set Contacts Reported to something greater than 0 and check the Contact Monitoring box) and then hook up the body_entered signal as pokumofu described. The enemy can check to see if it’s collided with a player and let it know: something like
# in enemy script
func _on_body_entered(body):
if body.get_name() == "player":
body.hit_by_enemy()
Then in the player:
# in player script
func hit_by_enemy():
print("ow")
# do whatever