Суть проблемы в том что спрайты рисуются не каждый кадр.
Допустим в первый кадр нужно нарисовать только два первых спрайта. Они будут стёрты на старых позициях. Затем нарисованы в новых с маской.
Во второй кадр нужно нарисовать два следующих спрайта. Они будут стёрты в старых позициях.
Если старые позиции перекрывают предыдущие нарисованные спрайты, то они будут стёрты. Маскирование не сработает. В этом проблема.
Придумал как частично полечить. Буду пробовать.
Идея в том чтобы разбить кадр на 4 вертикальные области. Если спрайты попадают в эту область то они за один кадр рисуются с маской. Отрисовка в этих областях в таком порядке чтобы не пересекаться с лучем.
раз ты спрайты по очереди рисуешь может все таки метод поспрайтовой рисовки?
ну когда выбирается сектор с нахлестом вокруг спрайта и все что там есть рисуется