Java 在鼠标单击或触摸时将box2d实体变为不可见
正如你在图片中看到的,我有一个有一些身体的box2d世界。我也设置了一个InputProcessor,但当我点击这些框时,我似乎无法使它们消失Java 在鼠标单击或触摸时将box2d实体变为不可见,java,android,Java,Android,正如你在图片中看到的,我有一个有一些身体的box2d世界。我也设置了一个InputProcessor,但当我点击这些框时,我似乎无法使它们消失 我基本上想要一种鼠标点击/触摸的方式来检查它是否与主体/框相交。如果是的话,我希望那具尸体消失。有人能给我指出正确的方向吗?我试着搭建一个舞台,把身体做成按钮,这样onClickListen就可以工作了,但结果很混乱,无法工作。好的,我自己设法解决了这个问题。这是我在InputProcessor类中编写的代码。 您需要在类的顶部声明hitBody作为bo
我基本上想要一种鼠标点击/触摸的方式来检查它是否与主体/框相交。如果是的话,我希望那具尸体消失。有人能给我指出正确的方向吗?我试着搭建一个舞台,把身体做成按钮,这样onClickListen就可以工作了,但结果很混乱,无法工作。好的,我自己设法解决了这个问题。这是我在InputProcessor类中编写的代码。 您需要在类的顶部声明hitBody作为body btw,下面没有显示
Vector3 testPoint = new Vector3();
QueryCallback callback = new QueryCallback() {
@Override
public boolean reportFixture(Fixture fixture) {
if(fixture.testPoint(testPoint.x,testPoint.y)){
hitBody = fixture.getBody();
return false;
}else{
return true;
}
}
};
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
GameRender.cam.unproject(testPoint.set(screenX,screenY,0));
hitBody = null;
GameWorld.physicsWorld.QueryAABB(callback, testPoint.x - 0.0001f,
testPoint.y - 0.0001f,
testPoint.x + 0.0001f,
testPoint.y + 0.0001f);
for(DynamicBox b:GameWorld.BoxList){
if(hitBody == b.boxerino){
System.out.println("click detected");
b.shouldRemove = true;
}
}
return false;
}
有一个布尔值,如果单击body,我会将其变为true。(b.shouldRemove=true),然后我转到更新循环,并从arrayList中删除body和body工厂类
public void update(float delta){
physicsWorld.step(delta, 2, 2);
for(int i=0;i<BoxList.size();i++){
DynamicBox b = BoxList.get(i);
if(b.shouldRemove==true){
physicsWorld.destroyBody(b.boxerino);
BoxList.remove(i);
}
}
}
公共无效更新(浮动增量){
物理世界.阶跃(δ,2,2);
对于(int i=0;i