На самом деле можно сделать алгоритм обнаружения столкновений агматическим. Просто используйте детектор столкновения, который работает по одному измерению, используйте это, чтобы проверить каждое измерение, и ваш ответ на «они сталкиваются или нет» является логическим И обнаружения столкновения вдоль каждого из измерений.
Ваша игра должна быть организована так, чтобы взаимодействие игровых объектов и визуализация игры на экране были полностью разделены. Вы можете думать об этих двух разделах программы как о «модели» и «представлении». В модели у вас есть полный 3D-мир с тремя осями. Вы не можете пойти на половину в этот момент без какой-либо боли. Ваша модель должна быть 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-точечную перспективу для глубокого фона и орфографический материал для переднего плана.
Отличный ответ Бретон. Теперь все это получилось. Спасибо за помощь! –