Изменение формы физического тела пиманка/бурундука

Я только начинаю работать с pymunk, и у меня возникла проблема, решение которой я не смог найти в документации.

У меня есть тело персонажа, которое меняет форму во время определенной анимации. Я знаю, как прикрепить формы к физическому телу, но как их изменить? Конкретно мне нужно временно поменять коробку на меньшую.

Это возможно?


person Leif Theden    schedule 29.10.2012    source источник


Ответы (1)


Есть несколько небезопасных методов изменения формы. Прямо сейчас (v3.0) pymunk поддерживает только обновления формы круга и формы сегмента. Тем не менее, я только что зафиксировал метод обновления формы Poly, доступный в последнем стволе pymunk.

Если вы не хотите запускать последний ствол, я предлагаю вам просто заменить форму, а не изменять ее. Конечный результат все равно будет одинаковым.

(Причина, по которой модификация фигур не приветствуется, заключается в том, что очень трудно сделать хорошую симуляцию, изменение размера происходит волшебным образом в одно мгновение. Например, как должно произойти столкновение между маленькими объектами, которые после изменения размера оказались бы внутри большого объекта. решиться?)

person viblo    schedule 29.10.2012
comment
Спасибо за ответ. Я сделал, как вы сказали, просто уничтожил старую форму и создал на ее месте новую. Я с нетерпением жду возможности увидеть настоящий метод обновления. Заменяя фигуры, это заставляет программиста также заменять ссылки, которые могут существовать в другом месте, и это раздражает, и не было бы проблем, если бы ссылка на новую форму оставалась прежней. - person Leif Theden; 06.11.2012
comment
Возможно ли иметь анимированные функции формы? Я ожидаю, что это не сильно отличается от движущихся объектов. (Редактировать: я хотел бы использовать это для моделирования размножения и роста (биологических) клеток.) - person Herbert; 15.12.2020
comment
В последних версиях Pymunk все 3 формы имеют небезопасные методы набора, которые можно использовать для изменения их форм. В настоящее время нет встроенной анимации, но вы, конечно, можете сделать это вручную. (например, увеличивайте радиус круга на 0,1 каждый временной шаг в течение 10 секунд). Должно быть довольно прямолинейно сделать. - person viblo; 16.12.2020