Repository: godot
Issue: cell_y_sort == true in TileMap breaks body_shape on collision with Area2D
Labels: bug,confirmed,topic:physics,topic:2d

<!-- Please search existing issues for potential duplicates before filing yours:
https://github.com/godotengine/godot/issues?q=is%3Aissue
-->

**Godot version:**
<!-- Specify commit hash if using non-official build. -->
Godot 3.3-stable

**OS/device including version:**
<!-- Specify GPU model, drivers, and the backend (GLES2, GLES3, Vulkan) if graphics-related. -->
Windows 10
GLES3
Nvidia GeForce RTX 2060 with Max-Q design (laptop)

**Issue description:**
<!-- What happened, and what was expected. -->
If you configure an Area2D to emit the body_shape_entered (or exited) signal when it collides with a TileMap that has y sorting enabled the 'body_shape' parameter of the body_shape_entered method will always be 0 (as opposed to the index of the tile in the TileMaps.get_used_cells() array). 

I do not know if this is expected/supported behavior.

**unrelated context as to how i found this bug**
I was trying to make a demo game involving a hexagonal grid based tilemap and was happily coding it such that the tilemap has a halfoffset for the hex tiles etc..., when I realized that instead of doing the whole rigmarole of calculating where the hex tile is compared to the underlying grid (see: https://godotengine.org/asset-library/asset/406) I could instead cheat by using collisions. Since this would only be a demo i figured I could cheat a little, and to my amazement it worked. five lines of code and Bam! I had it such that the tiles would detect the mouse. This works flawlessly, until suddenly it didn't (as usual). After some debugging I realized that the y-sort variable breaks my method of detecting which tile in the tilemap had collided. 

**Steps to reproduce:**
Create a Node2D
Add a TileMap child
Add a Area2D with a CollisionShape2D

In the TileMap, add a tileset.
Add a New Single Tile to the tileset and give it a region and a collision shape (whole area, or partial area)
Paint at least 2 tiles into the world

Connect the body_shape_entered signal of the Area2D

Add a script the the Area2D:

```
extends Area2D

func _process(delta):
position = get_global_mouse_position()

func _on_mouse_follower_body_shape_entered(body_id, body, body_shape, local_shape):
    print("body_shape: %s" % [body_shape])
```

Run the program and mouse over the tiles

you should see:
body_shape: 2
body_shape: 1
body_shape: 4
body_shape: 5
body_shape: 7

or some variation

then go back into the project and check the option Y Sort (property cell_y_sort) in the Tilemap

run the program and mouse over the tiles

you should see:
body_shape: 0
body_shape: 0
body_shape: 0
body_shape: 0
body_shape: 0

**Minimal reproduction project:**
<!-- A small Godot project which reproduces the issue. Drag and drop a zip archive to upload it. -->
I attached a minimal reproduction project. Hopefully it works for you. Sorry if I wasn't descriptive enough at any point, I've never done something like this before. If this is actually intended behavior I would appreciate a link so that I could remedy my ignorance.
[temp.zip](https://github.com/godotengine/godot/files/6450262/temp.zip)