Open Germenzi opened 3 years ago
Также я заметил, что у стандартных tilemap'овских преобразований с сетками смещения проблемы и существует такой неприятный баг, что когда координата ровно на вертикальной линии, то по вертикали координаты считаются криво
А что там конкретно за баг, если критический для определения клетки, то я только за. Если нет, то предлагаю засунуть в билд опционально
Баг присутствует не только в редакторе. Сначала я сделал демку со стандартными преобразованиями и просто водив мышкой баг проскакивал, что конечно ничего страшного, но он создает неприятное ощущение и убивает чувство контроля. Все-таки код не такой уж и большой, поэтому думаю пускай будет, все равно я буду писать класс для хексовых сеток на базе tilemap, запихну и это туда.
Я про "по вертикали координаты считаются криво" Тут смотря какая погрешность
Ну по картинке же видно, всегда считается на одну выше или одну ниже клетку, чем есть на самом деле.
Хексы никак не ложатся в прямоугольную сетку смещения ровно, поэтому надо их впихнуть с минимальными потерями. Самым оптимальным мне показался размер a·sqrt(3) по ширине и 3/2·a по высоте, где a это размер хекса. Это для горизонтальных хексов, для вертикальных наоборот. Для изометрии делим высоту пополам. Тогда пропадает только небольшая часть углов побокам:
Также я заметил, что у стандартных tilemap'овских преобразований с сетками смещения проблемы и существует такой неприятный баг, что когда координата ровно на вертикальной линии, то по вертикали координаты считаются криво:
Поэтому я написал нормальные преобразования. Этот баг есть при любых координатах смещения, поэтому я написал функции сразу для всех: