В какой ячейке он находится?
1 spacing =20;
2 x =53;
3 cell_column =Math.ceil(x/spacing);
В строке 1 мы устанавливаем переменную с именем spacing. Это ширина каждой ячейки. Строка 2 создает переменную с именем x, которая хранит координату Пэк-Мэна. В строке 3 мы употребляем простой математический трюк деления координаты на шаг. Затем мы округляем это число до ближайшего целого (в сторону уменьшения). С помощью этой уловки мы можем легко найти, в какой ячейке находится Пэк-Мэн! Это работает аналогичным образом и для координаты по вертикали.
Cell width
ширина ячейки
Подобно примеру с горизонтальной координатой, этот также содержит пять ячеек, ширина каждой равна 20. Координата y Пэк-Мэна равна 30. Ниже приводится код для нахождения номера ячейки, в которой он находится:
1 spacing =20;
2 y =30;
3 cell_row =Math.ceil(y/spacing);
Сложив все это вместе, мы можем определить координату Пэк-Мэна в сетке. Мы находим строку и колонку, где он находится и это определяет ячейку в сетке.
1 spacing =20;
2 x =53;
3 y =30;
4 cell_column =Math.ceil(x/spacing);
5 cell_row =Math.ceil(y/spacing);
Теперь, когда мы знаем в какой ячейке находится Пэк-Мэн, мы можем выполнить функцию hitTest() для клипа Пэк-Мэна и точки в этой плитке. Наверное, вы можете теперь понять, почему это такая мощная уловка. Если вы делаете игру, в которой персонаж расхаживает повсюду, и несколько плиток содержат воду, то когда ваш персонаж находится в одной из этих ячеек, вы можете сделать его плывущим или тонущим, или просто немного замедлившимся. Обычно происходит следующее:
1. Вы определяете, в какой ячейке находится персонаж.
2. Вы ищете объект, который представляет эту ячейку.
3. Вы смотрите на тип ячейки, в которой находится ваш персонаж. Если это ячейка с огнем, то ваш персонаж может получить травму. Если это ячейка с секретным ключом, то ваш персонаж может поднять его и выиграть очки.
Теперь давайте взглянем на простой пример иллюстрирующий этот трюк