Обнаружение столкновений на пиксель в Javascript / Jquery / Gamequery - PullRequest
1 голос
/ 21 мая 2010

Я пытаюсь запрограммировать веб-игру на Jquery с помощью плагина GameQuery, проблема в том, что плагин GameQuery не поддерживает обнаружение столкновений на пиксель, только обнаружение столкновений с ограничивающими прямоугольниками.Можно ли реализовать обнаружение столкновений на пиксель в javascript / Jquery?

У меня есть карта мира со странами и игроком, который перемещается с помощью клавиш со стрелками. Я хочу иметь возможность в любой момент сказать, в какой стране находится игрок, и страны имеют неправильные формы.

Ответы [ 4 ]

1 голос
/ 05 июля 2011

хорошо, вот какое-то решение:

назначьте каждой стране свой цвет на карте (не назначайте специальные цвета границам, границы должны быть окрашены в любой из цветов стран).

загрузить это изображение на холст

var img = new Image();
img.src = 'worldmap.png';
var map = document.getElementById('canvas').getContext('2d');
map.drawImage(img, 0, 0);

после этого вы можете отобразить вашу карту нормалей над этой картой (это только ссылка, и ее можно скрыть под другими вещами - используйте для этого divs и z-index).

чтобы определить, в какой стране игрок просто получает пиксельные данные на своей позиции

data = map.getImageData(x, y, 1, 1).data;
key = data.join("-"); // something like "255-0-0-255" for red
country = countries[key];

это должен быть массив rgba, вы можете посмотреть, какой стране присвоен этот цвет. поэтому вам нужно будет сохранить массив с внедренными значениями rgba в качестве ключа и названиями стран в качестве значения.

countries = {
"255-0-0-255"   : "Russia",
"255-0-255-255" : "China",
...
};

это работает только в браузерах, в которых есть объект canvas. так что если вы делаете это на iPhone или Android, вам повезло!

1 голос
/ 08 августа 2010

Или атаковать его под другим углом ... так сказать ...

Векторы могут быть вашим ключом, прикольные вещи происходят на http://www.raphaeljs.com

может быть, какая-то комбинация / интеграция могла бы работать?

0 голосов
/ 22 мая 2010

Это невозможно.

Однако у вас есть не очень сложная альтернатива: используйте столкновение на основе многоугольника.

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

Вы можете найти очень полное объяснение того, как реализовать это в этой записи на форуме (возможно, вам придется немного прокрутить вниз, пока вы не увидите изображения). Парень, задающий вопрос, хотел сделать более или менее то же самое, что и вы, чтобы сделать (положение мыши вместо положения персонажа).

Привет!

0 голосов
/ 21 мая 2010

Изображения - это просто pngs со сплошными цветами для страны и прозрачностью для остальных.

...