Я реализую небольшую игру, и у меня проблемы с правильной работой физики. В этой игре есть один шар (круг, который перемещается от кадра к кадру и может изменять радиус) и несколько стен (отрезки, которые также изменяются и перемещаются от кадра к кадру). Я могу обнаружить столкновения правильно, и заставить мяч отскакивать в правильном направлении, не проблема.Обработка столкновений между сегментами окружности и линии
Трудности возникают в ситуациях, когда мяч пересекает линию в одном кадре, а затем снова пересекает ее в следующем кадре, вызывая двойной отскок. Я мог бы переместить шар назад по нормали линии до тех пор, пока он не окажется в правильном положении, но это вызывает действительно странное поведение, когда соответствующая линия попадает по его оси (представьте, что мяч для пинг-понга падает на вертикальную зубочистку и внезапно смещаясь в сторону, чтобы она была на одной стороне зубочистки ...). Есть также несколько проблем, когда мяч пересекает более одной строки в данном фрейме (представьте себе четыре линии вместе, образуя прямоугольник и шар, пересекающий угол прямоугольника) - в каком направлении он должен отскакивать? В каком направлении оно должно меняться?
У меня действительно нет конкретного вопроса, но я ищу советы или полезные уроки. Все двумерные, которые мне удалось найти, охватывают только прямоугольные пересечения.
Я использую XNA, если это имеет значение.
Спасибо,
Cameron
Вы проверили физический двигатель Farseer? http://www.codeplex.com/FarseerPhysics – Martin
На самом деле, я просто скачал его вскоре после того, как задал свой вопрос. Я собираюсь попробовать это - он выглядит хорошо до сих пор (я читал документацию)! – Cameron
В конце концов, я не мог заставить движок делать то, что я хотел, и документации не хватало, поэтому я вернулся к своему пользовательскому физическому движку и улучшил его, используя некоторые из предложений ниже – Cameron