Я не хочу перемещать мое статическое тело после обнаружения контакта с другим телом, что я сделал, это создать класс, который реализует 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);
}
, когда тело сталкивается с другим телом, настольное приложение перестает отвечать на запросы, и я получаю это сообщение :
Это приложение попросило Runtime завершить его в необычным способом. Обратитесь в службу поддержки приложения за дополнительной информацией . AL lib: (EE) alc_cleanup: 1 устройство не закрыто Утверждение не удалось!
Программа: C: \ Program Files \ Java \ jdk1.8.0_51 \ Bin \ java.exe Файл: /вар/Библиотека/Jenkins/рабочее пространство/libgdx/расширения/GDX-box2d/GDX-box2d/JNI/Box2D/Динамика/b2Body.cpp, линия 419
Expression: m_world-> IsLocked() == ложный
Также можно рассмотреть [этот ответ] (http://stackoverflow.com/a/28380723/1841194). –