Questions about pixel-style 2D platformer implementation

I’ve just started learning unity and am trying to implement a simple 2D platformer for some practice.
And here’s 2 questions:

  1. How to set edge collider 2D precisely? I attached a edge collider 2D to the ground, and the character has a box collider2D component, but I can’t find a way to set the vertices’ position of edge collider precisely, so the character always seems to be floating several pixels above the ground, which bugs me a lot because that becomes way more serious when the target platform’s resolution is quite high - it looks like that the character floats “half pixel” or “quarter pixel” above the ground.
  2. How do I implement a platform that when the character jumps he can go through it but when he falls he lands on it, with unity’s 2d physics?
    Thank you for the reading.

One more question, how to judge whether a character is on the ground?
The tutorial I found on the website used a raycast, which is flawed because when the character stands on the edge of a platform, he’s not grounded - a case that is quite common for many platformer.
It’s quite confusing for me, the character lands on a edge collider2d, isn’t there a function to know which object it’s landing on? Why an additional ray collision test is needed? Did I miss something?
The tutorial: Unity Asset Store - The Best Assets for Game Making
Here’s when it go wrong:

  1. = this post
  2. I saw several posts addressing this functionality here and in answers. Check around - you will find it.
  3. This is addressed in several posts also.

Good luck. Post a picture of your character.