【发布时间】:2013-09-30 10:34:37
【问题描述】:
我正在使用 LibGDX 创建一个新项目。
我想要做的是,我将 tmx 文件中的主体加载到可以正常工作的关卡中。身体也有一个精灵。
问题是,我是否想让用户触摸场景中的某些物体。当他们触摸身体时,他们将能够将其从场景中删除或移除。
我不太熟悉在 libgdx 中做这样的事情。虽然我确信它没有那么复杂。
无论如何我可以在 LibGDX 中做到这一点吗?
编辑:
这是我到目前为止所拥有的。
QueryCallback callback = new QueryCallback() {
@Override
public boolean reportFixture(Fixture fixture) {
// if the hit fixture's body is the ground body
// we ignore it
// if the hit point is inside the fixture of the body
// we report it
hitBody = fixture.getBody();
return true;
}
};
@Override
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
// TODO Auto-generated method stub
hitBody = null;
return false;
}
现在我只是不确定如何删除被点击的身体..
【问题讨论】:
-
您将 hitbody 指定为空。但是在这里您要删除身体,您还应该编写代码以删除身体您可以在此处编辑的内容是在修饰中使用 world.destroyBody(hitbody)。然后初始化 hitbody = null。此外,如果这给您带来 JNI 错误,那么这意味着在世界的步骤循环中删除了主体。你应该防止这种情况发生。
-
这里的命中正文是用户点击的正文。所以你可以用那个身体做任何事情。
-
如果hitbody是body我怎么调用QueryCallback回调方法??
-
你能编辑我上面的代码,显示我应该如何做吗?
-
查看我的编辑。你会找到 world.queryAABB(..) 方法,它会在 reportFixture() 中给你一个回调,告诉你触摸了哪个夹具。如果需要,我之前提供的链接还将帮助您使用 mouseJoint 移动身体。