2D Floors Rendering Order

Hello. I have a 2D isometric game with floors. I’m trying to get my character to render behind two floors above, but not the floor below. In project settings I have the Transparency Sort Mode set to Custom Axis along Y (1) and Z (1) coordinates.

My map consists of floors - game objects called “Floor [Number]”. Each floor has its own Tilemap and Tilemap Renderer components. The floors are located under a game object with a Grid component, which sets the tilemap settings for all children. In my case, these are cells with a size of 4 X by 2 Y.

With this Transparency Sort Mode that I set, the floors take on the value of Y and Z in such a way that each floor above receives 1 more Y, but 1 less Z. For example, the 2nd floor has Y - 2, and Z - -2.000002 . Yes, here I had to make a small crutch offset, otherwise Unity would consider that the floors are at the same distance from the camera and would randomly select the rendering queue, but I need the floors above to be drawn higher than the bottom ones.

The problem is that with this configuration, my character, having a height of 2 floors, can easily be drawn behind several floors above him, what is right. But it also works on the floors below me, and I don’t know what to do about it. At first I thought that I should put the Sorting Layer of all the floors below me below, so that they would in any case be drawn before than the one on my floor and above me, but if, for example, an NPC with 2 or more floors in size would stand on the floor below, then it won’t work for him anymore. My floor will always be drawn after him and cover him, although visually he should be drawn on top of the obstacles that are at the level of his upper body (on my floor).

How can I get the floors below me to render below me without breaking the rendering of the floors above that I’m touching with my height?