Area2D func _ready(): # [ ... rest of your code ... ] get_node("Area2D").connect("body_enter",self,"_on_Area2D_body_enter") get_node("Area2D").connect("body_exit",self,"_on_Area2D_body_exit") func _on_Area2D_body_enter( body ): print("Entered Area2D with body ", body) func _on_Area2D_body_exit( body ): print("Exited Area2D with body ", body) KnematicBody Movendo: func _fixed_process(delta): var direction = Vector2(0,0) if ( Input.is_action_pressed("ui_up") ): direction += Vector2(0,-1) if ( Input.is_action_pressed("ui_down") ): direction += Vector2(0,1) if ( Input.is_action_pressed("ui_left") ): direction += Vector2(-1,0) if ( Input.is_action_pressed("ui_right") ): direction += Vector2(1,0) move( direction * speed * delta) Colidindo: func _fixed_process(delta): # [ ... previous code ... ] if is_colliding(): # colliding with Static, Kinematic, Rigid # do something print ("Collision with ", get_collider() ) # get_collider() returns CollisionObject Continuando o movimento: func _fixed_process( delta ): ... # [ ... your code ... ] if is_colliding(): var n = get_collision_normal() direction = n.slide( direction ) move(direction*speed*delta) RigidBody func _ready(): set_fixed_process(true) func _fixed_process(delta): var bodies = get_colliding_bodies() #for body in bodies: # print(body.get_name())