在2D等距网格中单击检测?
我已经进行了多年的网络开发,而且我正慢慢地参与游戏开发,对于我目前的项目,我已经有了这个等距地图,我需要使用算法来检测点击哪个字段。顺便说一句,这一切都在浏览器中使用Javascript。
地图
它看起来像这样,我添加了一些数字来显示字段(图块)的结构及其ID。所有字段都有一个中心点(x,y数组),四个角在绘制时基于这些中心点。
你可以看到它不是钻石形状,而是一个曲折的地图,没有角度(自上而下的视图)这就是为什么我自己无法找到答案,因为所有文章和计算通常都是基于钻石形状有一个角度。
数字
这是一张动态地图,可以更改所有尺寸和数字以生成新地图。
我知道它不是很多数据,但地图是根据地图和字段大小生成的。
- 地图大小:x:800 y:400
- 场尺寸:80x80(角落之间)
- 所有字段的中心位置(x,y)
目标
想出一个算法,告诉客户端(游戏)鼠标在任何给定事件(点击,移动等)中所处的哪个字段。
放弃
我想提一下,我自己已经提出了一个可行的解决方案,但是我100%肯定它可以用更好的方式编写(我的解决方案涉及很多嵌套的if语句和循环),那就是为什么我在这里问。
这是我的解决方案的一个例子,我基本上找到一个在最近的4个已知位置有角的正方形,然后根据最近的2个字段之间的最小平方得到我的结果。这有任何意义吗?
问我是否错过了什么。
没有找到相关结果
已邀请:
3 个回复
寒健
X和Y是图像中的坐标,长度是网格的间距。 现在它返回一个字符串,仅用于测试..结果应该是row和col,那些是我选择的坐标:你的瓷砖1有坐标(1,0)瓷砖2是(3,0),瓷砖10是( 0,1),图块11是(2,1)。您可以将我的坐标转换为一行或两行中的编号图块。 和一个用于测试的JSFiddle http://jsfiddle.net/NHV3y/ 干杯。 编辑:更改了返回语句,有一些我用于调试的变量。
街茬
功飘