Я читаю исходный код существующего платформера игры, и я наткнулся на это:Что именно делает этот прокруточный код платформы?
/* assign the horizontal position of the TileMap on the screen to offsetX
* this, center aligns the player. */
int offsetX = width/2 - Math.round(player.getX()) - TILE_SIZE;
/* stop the map scrolling if the player reaches the two ends
* of the map */
offsetX = Math.min(offsetX, 0); // if offsetX < 0 , offsetX = 0
offsetX = Math.min(offsetX, width-tileMap.getWidth()); //if offsetX > map width, offsetX = mapwidth
int offsetY = height - toPixels(tileMap.getHeight()); // not really necessary, I think
int firstTile = toTiles(-offsetX); // ???
int lastTile = firstTile + toTiles(width) + 1; // why the +1
я прокомментировал некоторые части, я думаю, я понимаю, и задавал вопросы о других в комментариях.
То, что беспокоит меня больше всего являются:
1- как OffsetX назначается (width/2 ... ?
) Я понял, что он присваивает OffsetX какое-то место на карте, центр которой совпадет игрок, но я понятия не имею, как.
2-В третьей строке, почему разработчик написал width - tileMap.getWidth()
?
Примечание: Если это слишком сложно объяснить код по строкам, пожалуйста, дайте мне приблизительную идею, возможно, с диаграммой? от того, что разработчик пытается сделать здесь. Благодарю.
Я не понимаю, ваш первый вопрос - вы говорите, вы понимаете 'ширина/2' (для выравнивания по центру игрока, вы правы от того, что я могу сказать), и здесь нет кода, который говорит 'player.x = offsetX', который является« как », я думаю ... – Prescott
' player.x = offsetX' выполняется после этого кода, извините, я его не разместил. Я хотел спросить, как именно формула 'width/2 - Math.round (player.getX()) - TILE_SIZE;' возвращает горизонтальную позицию TileMap на экране, который выравнивает по центру плеер. Я не понимаю теорию за формулой, хотя понимаю, что она делает. – ApprenticeHacker