我们的产品第一版开发已经完成,下面是主界面的两张截图。
定位精度和室内地图仍在逐步完善中,现在室内地图资源已经有700多张,支持北上广大部分商场。主要提供室内定位,室内地图服务以及优惠促销信息的推送。其中室内地图采用矢量图开发,可以自由配置修改。
目前APK仍在内部测试中,不对外开放下载。
随着数据业务和多媒体业务的快速增加,人们对定位与导航的需求日益增大,尤其在复杂的室内环境,如机场大厅、展厅、仓库、超市、图书馆、地下停车场、矿井等环境中,常常需要确定移动终端或其持有者、设施与物品在室内的位置信息。GPS是目前应用最为广泛的定位技术。当GPS接收机在室内工作时,由于信号受建筑物的影响而大大衰减,定位精度也很低,要想达到室外一样直接从卫星广播中提取导航数据和时间信息是不可能的。室内定位技术应时而出,室内定位能够提供更智能的移动服务和更精确的位置搜索,这些特点使其看来有望成为又一种热门的移动服务。
另一方面随着无线通信技术的发展,新兴的无线网络技术,例如WiFi、ZigBee、蓝牙和超宽带等,在办公室、家庭、工厂等得到了广泛应用,基本达到了室内定位需要的数量,且室内定位技术需要的设备成本也在逐步的下降中,室内定位技术是时候走出实验室走向市场,接受市场的检验了。
碰撞筛选就是一个防止某些形状发生碰撞的系统。按照具体需求设置哪些物体跟那些物体发生碰撞,跟哪些物体不发生碰撞。
Box2D通过种群跟组索引支持碰撞筛选。
组索引比较简单,设置其shapeDef的groupIndex值即可,例如boxDef.filter.groupIndex = 1。
通过groupIndex值的正负来确定同一个组的所有形状总是发生碰撞(正)或永远不发生碰撞(负),需要特别注意的是两个不同的付索引是依然会发生碰撞的,例如一个圆的GroupIndex值为-1,一个矩形GroupIndex值为-2。因为不同组索引之间是按照种群跟掩码来筛选的,也就是讲,组索引是有着更高的优选权的。
Box2D支持16个种群,因此我们可以指定任何一个形状属于哪个种群,同时也可以指定这一形状和哪些其它的种群发生碰撞。这一过程就是通过设置其shapeDef的categoryBits值与maskBits值完成的。
categoryBits用于定义自己所属的碰撞种类,maskBits则是指定碰撞种类。
举个例子讲,如果body1的boxDef.filter.categoryBits = 0x0002,body2的boxDef.filter.categoryBits = 0x0004,则如果另外一个body想与他们两个都发生碰撞,则其boxDef.filter.maskBits
= 0x0006;简单讲,一个body要与其它种群的body发生碰撞,则其maskBits值应该为其它种群的body的categoryBits之和。
举例说明 box2d 碰撞筛选问题
1:让两个角色同时碰撞地图 ,2:两个角色之间不可以碰撞,3:小飞机可以碰撞金币,而小蜗牛不可以碰撞金币。如图所示:
小飞机的属性设置:
fd.filter.categoryBits=0x0004;
fd.filter.maskBits=0x0008;
蜗牛的属性设置:fd.filter.categoryBits=0x0002;
fd.filter.maskBits=0x0008;
地图的属性设置fd.filter.categoryBits=0x0008;
fd.filter.maskBits=0x0006;
金币的属性设置fd.filter.categoryBits=0x0008;
fd.filter.maskBits=0x0004;
仔细看一下其中的奥妙吧。
即有如下的16个种群:
0x0000 = 0
0x0001 = 1
0x0002 = 2
0x0004 = 4
0x0008 = 8
0x0010 = 16
0x0020 = 32
0x0040 = 64
0x0080 = 128
0x0100 = 256
0x0200 = 512
0x0400 = 1024
0x0800 = 2048
0x1000 = 4096
0x2000 = 8192
0x4000 = 16384
0x8000 = 32768