Как заставить тело box2d двигаться по кривой Безье / траектории дуги
Я много искал, как заставить тело Box2d двигаться по кривой Безье или по дугообразному пути с начальной точкой, конечной точкой и, возможно, другой контрольной точкой. Я знаю, что объекты cocos2d можно перемещать с помощью ccBezier, но как это можно сделать для тел Box2d? Пожалуйста помоги. Заранее спасибо.
1 ответ
Я попытался переместить тело box2d, используя кривую (заставляя паука ходить вокруг астероида). Я обнаружил, что с помощью SetTransform каждый кадр работал, но это приводило к сбою реакции на столкновение в двигателе.
Мне удалось найти гораздо лучшее решение, используя призматические швы. Вы создаете соединение, начиная с позиции (p0), с которой хотите начать, и указывает на следующую путевую точку (p1). Затем вы позволяете суставу толкать корпус от p0 до p1 с помощью двигателя. Когда тело приблизится к следующей точке, уничтожьте сустав и сформируйте новый для следующих двух точек. Тело все еще будет иметь свою скорость, поэтому движение выглядит плавным.
Я разместил более полный пост по этому вопросу в Переполнении стека здесь.
это было полезно?