Вычислить местоположение объекта (декартову координату) на сетке (размер объекта и размер плитки земли различны) - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь написать функцию, которая сообщает, на какие плитки наступает мой игрок, зная, что [размер плитки земли) отличается от [размера плитки игрока]

Я хочу избежать обхода всей карты любой ценой .

к сожалению, у меня нет этого уровня в математике, что означает, что я понятия не имею, как это сделать.

Я работаю с 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

Спасибо, что читаете меня.

...