I think you might be getting a bit confused by your perspective & (very nice!) graphics.
The first thing you need to realize is that your game is actually a 2d game; "depth" and "width" are relevant to gameplay, but "height" is only there for aesthetic purposes. (At least on the screenshot you showed)
What I'm trying to say is that your game can be imagined as happening "on the ground".
Let me illustrate. I'm going to highlight the depth and width of every character and item on the scene you showed (I'm also adding a bullet). Notice how everything has a "footprint" on the ground, with its depth and width.
![entity footprints](./download/file.php?id=2605&sid=afac69dd31c2d83c9ea661703b7ec8e2)
- entity footprints
- coal1.png (124.33 KiB) Viewed 1660 times
Those "footprints" are really the only important pieces of your game (collision-wise). In other words, you can imagine your game space like this:
![entity footprints, sans graphics](./download/file.php?id=2606&sid=afac69dd31c2d83c9ea661703b7ec8e2)
- entity footprints, sans graphics
- coal2.png (1.52 KiB) Viewed 1660 times
Now it should be simpler to understand how the collision detection might work: You just have to check that the yellow footprint intersects with any green footprints. Incidentally, this can also be used for health pickup detection (player footprint intersects with a mauve footprint) or enemy hitting the player (enemy footprint intersects with player footprint).
This snippet will help you check that two rectangles intersect easily.
If I were you, I'd activate a "debug key" that showed all footprints, at least while developing the game.
Finally, a minor thing: notice that your two zombie footprints are intersecting. This should not happen, it's a perspective error.