2013-06-24 2 views
0

У меня есть следующая ситуация в моем приложении, созданном в AndEngine: спрайты с прикрепленными корпусами Box2D, появляются и падают на землю из-за введенной силы тяжести. Первый предмет правильно падает на землю. Второй объект падает на первый объект - это нормально, но если я его переместю, то он не падает на землю, а висит в воздухе. (Я подключил обработчик касания, чтобы перенести объект пальцем). В принципе, иногда после столкновения 2-й объект получает некоторый невидимый запас на его дне. Кто-нибудь заметил эту ситуацию и может дать мне подсказку, пожалуйста? Я просто отлаживаю его, все объекты имеют приспособление, которое я установил в начале (плотность 5, или 1 - это не имеет значения, эластичность 0, трение 1). enter image description hereТело зависает после столкновения

ответ

0

ОК, я понял! Тело вращалось, но я не видел его из-за

PhysicsConnector(element, body, true, false) 

(последний параметр).

Ключевым моментом здесь было установлено постоянное вращение (до 0):

body.setFixedRotation(true); 
1

У меня есть знания относительно этой ситуации. Сначала вы должны создать мир физики следующим образом.

mPhysicsWorld = new PhysicsWorld(new Vector2(0,SensorManager.GRAVITY_EARTH),false); 

Здесь, в приведенном выше примере, последний параметр allowSleep. В этом случае вы должны передать false, чтобы никакие тела box2d не спали.

И еще одна ситуация, если вы перемещаете тело, которое было прикреплено с помощью спрайта, тогда обеспечивают надлежащую скорость перемещения объекта, не выполняющего преобразования тела.

+0

Спасибо за ваш ответ. У меня есть «ложь» в создании PhysicsWorld. Другое дело: мои объекты перемещаются onAreaTouched и Body.setTransform ... как обеспечить скорость объекта по onAreaTouched? Может ли это вызвать мою проблему? Обратите внимание, что верхний объект ведет себя странно, даже если я его вообще не трогаю, просто коснитесь нижнего объекта и удалите его из-под верхнего. – Yar

+0

Также: это происходит, когда верхний объект падает не централизованно, а частично, только с одной стороны (т. Е. С нижним левым углом в верхнем правом углу нижнего объекта). – Yar

+0

Если вы получили ответ, то отметьте его как правильное, чтобы другие люди могли его использовать. Чтобы перемещать тело на ощупь, вы должны установить мышечный сустав при касании и прикоснуться к разрушающему мыщу. Для более подробной информации вы можете просмотреть примеры andengine. – Siddharth