Я пытаюсь сделать Tiny Wings, как в javascript.
Я впервые увидел технику с использованием Box2D, я использую закрыть-веб-версию (из-за исправления утечек памяти).
Короче говоря, я взорву кривую на многоугольники, чтобы она выглядела так:
Я также пробовал с Chipmunk-js, и я использую форму сегмента, чтобы имитировать мое основание:
В обоих случаях я испытываю некоторые "сбои" или "удары" в общих точках между многоугольниками или сегментами, когда кружок катится.
Я спросил об этом для Chipmunk, и автор сказал, что он реализовал свойство радиуса для сегмента, чтобы уменьшить это поведение. Я пробовал, и это действительно трюк, но это не идеально. У меня все еще есть некоторые удары (я должен был установить 30px радиуса, чтобы получить положительный эффект).
"Удары" добавляются в общих точках между двумя полигонами:
Используя illandril, предложили мне технику обрезки (он тестировал только с полигоном- полигональный контакт), чтобы избежать крушения на краю:
Также попытался добавить параметр пули, предложенный Люком, и ничего не изменилось.
Здесь демо проблемы.
Вы можете попробовать изменить значение, чтобы проверить:
- опция пули
- размер края
- количество итераций
- физика
(тестируется только на последнем браузере Chrome)
Будьте терпеливы (или измените горизонтальную гравитацию), и вы увидите, что я имею в виду.
Здесь репо для заинтересованных.