Фактически возможно сделать ваш алгоритм обнаружения столкновений независимым от размеров. Просто имейте детектор столкновений, который работает по одному измерению, используйте его для проверки каждого измерения, и ваш ответ «сталкиваются они или нет» - это логическое И обнаружения столкновения по каждому из измерений.
Ваша игра должна быть организована так, чтобы взаимодействие игровых объектов и рендеринг игры на экран были полностью отделены друг от друга. Вы можете думать об этих двух разделах программы как о «модели» и «представлении». В модели у вас есть полный трехмерный мир с 3 осями. Вы не можете пойти наполовину по этому вопросу без некоторого уровня боли. Ваша модель должна быть в 3D.
Вид прочитает местоположение всех игровых объектов и спроецирует их на экран, используя определение камеры. Для этой части вам не нужен полный движок 3D рендеринга. Правильный технический термин для перспективы, о которой вы говорите, является «косым», и его можно увидеть на многих древних китайских и японских свитках и картинах, в частности ищите изображения «Сказки о Гэндзи».
Положение объекта на экране (включая поверхность земли!) Выглядит примерно так:
DEPTH_RATIO=0.5;
view_x=model_x-model_z*DEPTH_RATIO-camera_x;
view_y=model_y+model_z*DEPTH_RATIO-camera_y;
Вы можете изменить для прямой ортографической проекции:
DEPTH_RATIO=0.5;
view_x=model_x-camera_x;
view_y=model_y+model_z*DEPTH_RATIO-camera_y;
И, конечно же, не забывайте отбирать объекты за пределы объема, определенного камерой.
Вы также можете использовать этот механизм для управления позиционированием слоев параллакса. Это, конечно, вопрос смены камеры на перспективную 1-точечную проекцию вместо ортографической проекции. Вам не нужно использовать это, чтобы изменить размер рендеринга ваших спрайтов, но это поможет вам реалистично управлять положением x объектов. если вы готовы принять вызов, вы можете даже смешать проекции - используйте 1-точечную перспективу для глубокого фона и орфографические элементы для переднего плана.