そういう判定って、いわゆる忍者くんで言うところの
踏んだ、踏まれた、正面からぶつかりあった、てのの処理分けなんじゃないの。
・重なっている
 ┣相手より上にいる
 ┃┣自分は落下中かジャンプ中→上から踏んだ
 ┃┗それ以外→下から体当たりされた
 ┣相手より下にいる
 ┃┣相手は落下中やジャンプ中→上から踏まれた
 ┃┗それ以外→下から体当たりした
 ┗それ以外(同じ高さ)→通り抜けないよう、移動速度以上の反発をしあう

相手より上にいる下にいる、というのには若干幅を持たせて
三つの分岐の調整はした方がいいね。