Время сна Box2D

Мне просто интересно, есть ли способ изменить количество времени до активации состояния сна для тела в box2d (cocos2d).

В настоящее время я использую состояние сна как способ закончить игру, поэтому было бы предпочтительнее, если бы я мог ускорить время, необходимое для достижения состояния сна.

Спасибо


person John Smith    schedule 11.05.2012    source источник


Ответы (1)


Физический движок не усыпляет объекты в зависимости от времени. Он усыпляет только те тела, которые находятся в состоянии покоя (праздности). Обычно физический движок определяет правила, когда безопасно усыплять тело, обычно это когда тело вообще перестало двигаться, когда его не касаются другие движущиеся тела, и когда оба условия выполняются в течение определенного периода времени.

В Box2D вы не можете изменить это поведение, если не измените исходный код Box2D (не рекомендуется). В Chipmunk вы можете, по крайней мере, установить порог того, как долго тело должно бездействовать, прежде чем оно будет усыплено. Изменение этого значения может иногда приводить к тому, что медленно движущиеся объекты внезапно засыпают.

Чтобы реализовать желаемое поведение, вы должны определить свой собственный набор правил. Переберите все тела, которые могут медленно двигаться в конце игры. Получите значения углового вращения и скорости и проверьте, упали ли они ниже определенного порога, который подходит для вашей игры. Затем завершите игру, или вы также можете вручную перевести объект в режим сна с помощью body->SetAwake(false).

person LearnCocos2D    schedule 12.05.2012