Как и в случае с крисом, в зависимости от размера экрана количество отображаемых пикселей меняется. Поэтому используйте love.graphics.getHeight(), чтобы получить фактическую высоту экрана в пикселях.
Затем вы хотите убедиться, что ваш объект всегда остается в одном месте, независимо от размера экрана. Вы можете добиться этого, если вы вычтите некоторые пиксели от фактической высоты экрана (известный от getHeight()
). Что-то вроде этого:
screenHeight = love.graphics.getHeight()
objectPositionY = screenHeight - 100
objectHeight = 10
Но, как вы только что упомянули в одном из приведенных выше замечаний, на «меньших» размеров окна объекта не будут отображаться на всех. Это происходит, если screenHeight
меньше, чем 100 пикселей, которые вы вычтите, и в этом случае объект отображается выше/вне видимого экрана, конечно.Но если вы действительно хотите создать игру, используя такие маленькие окна, вы можете попробовать что-то вроде этого:
screenHeight = love.graphics.getHeight()
objectPositionY = screenHeight * 0.9
objectHeight = screenHeight * 0.05
Таким образом, объект всегда говорит на том же месте, в зависимости от ScreenHeight, где 0
является верхней и 1
- нижняя часть экрана. О, и, конечно же, вы можете сделать то же самое и для screenWidth
.
Но в целом вы можете ограничить минимальный размер чем-то полезным.
И для полноты, если вы хотите создать игру для нескольких платформ (особенно Android) с использованием highDPI, вы можете также рассмотреть love.window.getPixelScale!
Также, если это не подходящее место, чтобы задать этот вопрос, извините, я смущен – fnTASY
Какой код вы используете для установки позиции игрока? – chris
@chris Ну, если я объясню правильно, но вот код, это учебник, поскольку я новичок в love2. Github из учебника: https://github.com/charles-l/gamedev_tutorial/blob/cd76f87db40fa3a802ccdf283c39745d1de1d19e/invaders.love/main.lua – fnTASY