У меня есть следующая ситуация в моем приложении, созданном в AndEngine: спрайты с прикрепленными корпусами Box2D, появляются и падают на землю из-за введенной силы тяжести. Первый предмет правильно падает на землю. Второй объект падает на первый объект - это нормально, но если я его переместю, то он не падает на землю, а висит в воздухе. (Я подключил обработчик касания, чтобы перенести объект пальцем). В принципе, иногда после столкновения 2-й объект получает некоторый невидимый запас на его дне. Кто-нибудь заметил эту ситуацию и может дать мне подсказку, пожалуйста? Я просто отлаживаю его, все объекты имеют приспособление, которое я установил в начале (плотность 5, или 1 - это не имеет значения, эластичность 0, трение 1). Тело зависает после столкновения
0
A
ответ
0
ОК, я понял! Тело вращалось, но я не видел его из-за
PhysicsConnector(element, body, true, false)
(последний параметр).
Ключевым моментом здесь было установлено постоянное вращение (до 0):
body.setFixedRotation(true);
1
У меня есть знания относительно этой ситуации. Сначала вы должны создать мир физики следующим образом.
mPhysicsWorld = new PhysicsWorld(new Vector2(0,SensorManager.GRAVITY_EARTH),false);
Здесь, в приведенном выше примере, последний параметр allowSleep. В этом случае вы должны передать false, чтобы никакие тела box2d не спали.
И еще одна ситуация, если вы перемещаете тело, которое было прикреплено с помощью спрайта, тогда обеспечивают надлежащую скорость перемещения объекта, не выполняющего преобразования тела.
Спасибо за ваш ответ. У меня есть «ложь» в создании PhysicsWorld. Другое дело: мои объекты перемещаются onAreaTouched и Body.setTransform ... как обеспечить скорость объекта по onAreaTouched? Может ли это вызвать мою проблему? Обратите внимание, что верхний объект ведет себя странно, даже если я его вообще не трогаю, просто коснитесь нижнего объекта и удалите его из-под верхнего. – Yar
Также: это происходит, когда верхний объект падает не централизованно, а частично, только с одной стороны (т. Е. С нижним левым углом в верхнем правом углу нижнего объекта). – Yar
Если вы получили ответ, то отметьте его как правильное, чтобы другие люди могли его использовать. Чтобы перемещать тело на ощупь, вы должны установить мышечный сустав при касании и прикоснуться к разрушающему мыщу. Для более подробной информации вы можете просмотреть примеры andengine. – Siddharth