【发布时间】:2015-11-13 16:31:58
【问题描述】:
在检测到来自另一个身体的接触后,我不想移动我的静态身体,我所做的是创建一个实现ContactLisner 的类。我能够检测到两个物体何时发生碰撞,但是当我尝试移动物体时出现错误。
//this is my first try, the idea was to call this method when contact is detected.
public static void movePlatform(){
platform.setTransform(position.x += 21f, position.y, 0f);
}
//on my contact listener class
public void beginContact(Contact contact) {
Fixture fa = contact.getFixtureA();
Fixture fb = contact.getFixtureB();
Platform.movePlatform();
}
我也试过这个,但我不知道是否可以这样做:
public void beginContact(Contact contact) {
Fixture fa = contact.getFixtureA();
Fixture fb = contact.getFixtureB();
fb.getBody().setTransform(10f, 0f, 0f);
}
当身体与另一个身体发生碰撞时,桌面应用程序停止响应,我收到以下消息:
此应用程序已请求运行时终止它 不寻常的方式。请联系应用程序的支持团队了解更多信息 信息。 AL lib: (EE) alc_cleanup: 1 设备未关闭断言 失败!
程序:C:\Program Files\Java\jdk1.8.0_51\bin\java.exe 文件: /var/lib/jenkins/workspace/libgdx/extensions/gdx-box2d/gdx-box2d/jni/Box2D/Dynamics/b2Body.cpp, 419行
表达式:m_world->IsLocked() == false
【问题讨论】:
-
也值得关注this answer。