Так что я хочу знать, как работать с (который будет в полноэкранном режиме) на разных размерах экрана.
Это распространенная проблема, которая имеет довольно легкое разрешение. Часто это делается путем отделения жестких координат холста от так называемых «модельных» координат.
Это действительно зависит от того, как ваш код организован, но я предполагаю, что игра имеет некоторую высоту и ширину для мира, который занимает большинство или весь экран. Два соотношения сторон экрана, на которые настроены таргетинг, равны 1,5 и 1,666, поэтому вы захотите удовлетворить меньший размер
Итак, вы действительно захотите сделать свою игру в наборе «модельных» координат, которые не имеют никакого отношения к размерам экрана или холста. Поскольку вы ориентируетесь только на два размера экрана, ваши координаты модели могут быть 960x640, поскольку это меньший из двух пропорций. Это не обязательно. Это может быть 100x50 для ваших координат модели. Но в этом примере мы будем использовать 960x640 в качестве нашей модели координат.
Внутренне вы никогда не используете ничего, кроме этих координат модели. Вы никогда не задумываетесь ни в каких других координатах при создании своей игры.
Когда размер экрана составляет 960x640, вам не придется ничего менять, так как это сопоставление 1: 1, что удобно.
Тогда, когда размер экрана на самом деле составляет 800x480, когда придет время рисовать на экран, вы захотите перевести все координаты модели на (3/4), чтобы игра была сделана и использовалась внутри страны 960x480, но он будет нарисован в области (720x480). Вы также захотите взять любой элемент мыши или сенсорный ввод и умножить его на (4/3), чтобы превратить координаты экрана в координаты модели.
Этот перевод может быть таким же простым, как позвонить ctx.scale(3/4, 3/4)
, прежде чем рисовать все.
Таким образом, обе платформы будут иметь код, который все написан в предположении, что игра имеет размер 960x640. Единственный момент, когда координаты модели становятся координатами экрана, - это рисование на холсте (которое отличается размера) и преобразование координат холста мыши/касания для моделирования координат.
Если это вас смущает, я могу попробовать и сделать образец.
ctx.scale работает, но делает растровые изображения немного размыто (даже сворачивают). Решение для этого было бы иметь разные наборы изображений для каждого разрешения (диапазона), правильно? – Ixx
Почему все это явное масштабирование? Используйте ширину/высоту в HTML, чтобы установить свой «размер модели», и используйте эти координаты UNscaled везде. Затем используйте CSS, чтобы физический размер вашего