Я пытаюсь написать функцию, которая сообщает, на какие плитки наступает мой игрок, зная, что [размер плитки земли) отличается от [размера плитки игрока]
Я хочу избежать обхода всей карты любой ценой .
к сожалению, у меня нет этого уровня в математике, что означает, что я понятия не имею, как это сделать.
Я работаю с 2D классической декартовой системой координат, как любая классическая RPG.
Я пытался вычислить первую плитку, на которой был мой игрок, а затем я потерян. Я не мог сделать больше.
Я сделал что-то вроде i = math.floor (entity.x / size tile)
То же самое для j
затем index = (i + 1) + j * nbTilesPerRow
Фактические результаты: ничего. Плитки остались незамеченными, даже [индекс плитки], который я получил из упомянутой формулы.
function Map:ClickedTile( mouseX, mouseY )
local i = math.floor( mouseX / self.tile.size )
local j = math.floor( mouseY / self.tile.size )
local index = i + j * self.tile.width
return index
end
Этот код работает и дает мне индекс плитки, на который я нажал.
Я хочу повторить это, чтобы узнать все плитки, с которыми сталкивается мой игрок, избегая при этом прохождения по всей карте.
Пример данных:
tile size = 32 * 32
player tile size = 64 * 64
map size : 25 * 19
Спасибо, что читаете меня.