Предлагаю своё решение задания 2 к уроку 24.
Наш враг не умирал, если мы слетали с пола вниз на него не подпрыгивая, потому что OnGround оставалось равным true (а он умирал если onground был false). С этим ещё связано то, что мы слетев с пола вниз могли подпрыгнуть один раз в воздухе. То есть, когда мы стоим на полу, onGround = true, если мы подпрыгнем он равен false до тех пор, пока мы не упадём. Но если мы слетим с пола не подпрыгнув, то onGround останеться равным тру всё равно.
Я решил проблему, добавив одну строчку в самом конце функции checkColissionWithMap (в классе игрока):
else { if (dy > 0) { onGround = false; } // если мы не пересекаемся не с какими прямоугольниками и dy > 0, то onGround = false.
Теперь мы можем слетая с пола убивать врага, а также мы больше не можем подпрыгнуть в воздухе слетев с пола.