Java Box2d过滤器(maskbits和categorybits)
我搜索了很多次,但我不确定为什么我的联系人筛选不起作用。我使用libgdx创建了这个简单的游戏。代码如下:Java Box2d过滤器(maskbits和categorybits),java,libgdx,bit-manipulation,game-physics,bitmask,Java,Libgdx,Bit Manipulation,Game Physics,Bitmask,我搜索了很多次,但我不确定为什么我的联系人筛选不起作用。我使用libgdx创建了这个简单的游戏。代码如下: public static final short BORDER_CATEGORY_BITS = 0x0001; public static final short PLAYER_CATEGORY_BITS = 0x0002; public static final short ENEMY_CATEGORY_BITS = 0x0003; public static final short
public static final short BORDER_CATEGORY_BITS = 0x0001;
public static final short PLAYER_CATEGORY_BITS = 0x0002;
public static final short ENEMY_CATEGORY_BITS = 0x0003;
public static final short FOOD_CATEGORY_BITS = 0x0004;
public static final short BORDER_MASK_BITS = PLAYER_CATEGORY_BITS;
public static final short PLAYER_MASK_BITS = BORDER_CATEGORY_BITS | ENEMY_CATEGORY_BITS;
public static final short ENEMY_MASK_BITS = PLAYER_CATEGORY_BITS;
public static final short FOOD_MASK_BITS = PLAYER_CATEGORY_BITS;
我希望玩家击中边界和敌人,敌人只击中玩家,其他什么都不击中,但我有一个游戏循环,每3秒增加一个敌人,他们以不同的速度前进,并且互相攻击。我还没有真正的工作与食物,所以你可以忽略这一点 您的
敌方\u类别\u位
错误。0x0003
实际上是0x0001 | 0x0002
。那意味着你在说
ENEMY_CATEGORY_BITS = BORDER_CATERGORY_BITS | PLAYER_CATERGORY_BITS
所以你说敌人
是玩家
和边界
,当玩家
与边界
碰撞时,敌人
将与边界
碰撞
要设置正确的位,您需要使用2的幂,如1、2、4、8、16、32
另外,始终确保两个对象相互碰撞,如果Player
与Border
碰撞,但Border
与Player
不碰撞,则不会发生Player Border碰撞。我建议你读一下这本书