首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript/Jquery/Gamequery中的每像素碰撞检测

Javascript/Jquery/Gamequery中的每像素碰撞检测
EN

Stack Overflow用户
提问于 2010-05-22 02:08:30
回答 4查看 2K关注 0票数 1

我正在尝试用GameQuery插件在Jquery中编写一个网页游戏,问题是GameQuery插件不支持每个像素的碰撞检测,只支持边界框的碰撞检测。有没有可能在javascript/Jquery中实现每像素的冲突检测?

我有一个国家和球员的世界地图,这是使用箭头键移动,我希望能够告诉球员在哪个国家在任何时候,国家是不规则的形状。

EN

回答 4

Stack Overflow用户

发布于 2010-08-08 07:36:29

或者从不同的angle...so攻击它。

向量可能是你的关键,在http://www.raphaeljs.com上发生的很酷的事情

也许某种组合/集成可以起作用?

票数 1
EN

Stack Overflow用户

发布于 2011-07-06 01:54:44

好的,这是一种解决方案:

在您的地图中为每个国家分配不同的颜色(不要为边框分配特殊颜色,边框应该以国家的任何一种颜色着色)。

将该图像加载到画布中

代码语言:javascript
复制
var img = new Image();
img.src = 'worldmap.png';
var map = document.getElementById('canvas').getContext('2d');
map.drawImage(img, 0, 0);

在此之后,你可以在该贴图上方显示你的法线贴图(它只是一个参考,并且可以隐藏在其他东西下-使用div和z-index )。

为了确定玩家是在哪个国家获得其位置上的像素数据

代码语言:javascript
复制
data = map.getImageData(x, y, 1, 1).data;
key = data.join("-"); // something like "255-0-0-255" for red
country = countries[key];

它应该是一个rgba数组,然后您可以查找分配给该颜色的国家/地区。因此,您必须保留一个数组,将内爆的rgba值作为键,将国家名称作为值。

代码语言:javascript
复制
countries = {
"255-0-0-255"   : "Russia",
"255-0-255-255" : "China",
...
};

这只适用于具有canvas对象的浏览器。所以,如果你是在iphone或android上做这件事,那你就很幸运了!

票数 1
EN

Stack Overflow用户

发布于 2010-05-22 03:33:03

这些图像只是pngs,对于国家是纯色的,对于其余的是透明的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2884454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档