Причина, по которой они появляются в одном и том же месте, заключается в том, что вы используете tileSize
только для позиционирования.
Таким образом, если бы tileSize
было 16, x()
всегда добавляло бы спрайт в позиции 8, 8.
В вашем for
цикле есть это:
this.platform = this.add.sprite(
j * gameOptions.tileSize + gameOptions.tileSize / 2,
i * gameOptions.tileSize + gameOptions.tileSize / 2, 'platform')
.setInteractive()
Вы можете видеть, что вы берете tileSize
и умножаетесь на позицию сетки.
Я бы порекомендовал изменить ваши функции x
и y
, чтобы они принимали либо число, либо указатель, который должен быть уже доступен в clickCounter()
, если вы добавите аргумент (добавив console.log(arguments);
в clickCounter()
должны выйти из доступных аргументов).
Исходя из положения указателя, вы можете затем выполнить математику, чтобы определить, по какой плитке был нажат.
Другой альтернативой может быть добавление пользовательских свойств к каждому спрайту плиток, например, row
и column
, для которых установлено соответствующее значение i
/ j
. Кликнувший на спрайт должен быть доступен в clickCounter
также как один из аргументов, и тогда вы можете просто получить пользовательские свойства.
Если вы используете TypeScript, вам нужно создать собственный объект, расширяющий Sprite.