在运行时更新物理体的掩码位不起作用 ANDENGINE
Updating maskbit of a physics body in runtime not working ANDENGINE
我正尝试在 andEngine 中开发类似 run! black and white 的游戏。
如果您查看游戏,平台掩码位会在运行时发生变化。
为了达到这个效果,我试图在运行时更改每个平台掩码位,就像这样。
Filter filter1 = new Filter();
filter1.maskBits = CATEGORYBIT_NOT_COLLIDE;
single_divider.physics_body.getFixtureList().get(0).setFilterData(filter1);
但平台掩码位不会在运行时更改。
我不知道似乎是什么问题。我认为物理体的过滤数据需要在设置新的过滤数据之前重置。但是我不知道怎么办。
如果有人能指导我正确的方向。
如果你想暂时关闭碰撞,更好的办法是使用setSensor()方法
single_divider.physics_body.getFixtureList().get(0).setSensor(true);
传感器是一种检测碰撞的固定装置,因此您仍然可以在碰撞侦听器中处理它们,但物体不会发生碰撞。 Read more here
当然你也可以打电话
single_divider.physics_body.getFixtureList().get(0).setSensor(false);
关闭传感器(因此再次打开碰撞)
我正尝试在 andEngine 中开发类似 run! black and white 的游戏。 如果您查看游戏,平台掩码位会在运行时发生变化。
为了达到这个效果,我试图在运行时更改每个平台掩码位,就像这样。
Filter filter1 = new Filter();
filter1.maskBits = CATEGORYBIT_NOT_COLLIDE;
single_divider.physics_body.getFixtureList().get(0).setFilterData(filter1);
但平台掩码位不会在运行时更改。 我不知道似乎是什么问题。我认为物理体的过滤数据需要在设置新的过滤数据之前重置。但是我不知道怎么办。
如果有人能指导我正确的方向。
如果你想暂时关闭碰撞,更好的办法是使用setSensor()方法
single_divider.physics_body.getFixtureList().get(0).setSensor(true);
传感器是一种检测碰撞的固定装置,因此您仍然可以在碰撞侦听器中处理它们,但物体不会发生碰撞。 Read more here
当然你也可以打电话
single_divider.physics_body.getFixtureList().get(0).setSensor(false);
关闭传感器(因此再次打开碰撞)