Как сделать "сложные" фигуры в пимунке?

Как видно из заголовка, как я могу соединить / ограничить 2 тела / фигуры пимунков, чтобы они не действовали как один отдельный объект??
Например, в этом случае у меня есть крикетная бита, состоящая из 2 отдельных тел и поли.
Я хочу присоединить "ручку" летучей мыши к "лезвию" моей летучей мыши, чтобы получить объект, похожий на летучую мышь.

Мой код:

### BAT n Co. ###
# body format: [vertices, offset, position, mass]
bat_bodies_v = [
# bat
    [[[0, 34], [4, 34], [4, 0], [0, 0]],(-2,-20),(103,190),20], # handle
    [[[6, 90] , [0, 32] , [0, 17], [6, 0] , [10, 0], [10, 90]],(-5,-20),(100,100),1100] # blade
]

bat_bodies = []
for vertices, offset, pos, mass in bat_bodies_v:
    moment = pm.moment_for_poly(mass,vertices,offset)
    b = pm.Body(mass,moment)
    b.position = pos

    poly = pm.Poly(b, vertices,offset)
    poly.friction = 0.9

    bat_bodies.append(poly)
    space.add(b,poly)

# the closest I got.
j1 = pm.constraint.PinJoint(bat_bodies[0].body,bat_bodies[1].body)
j2 = pm.constraint.RotaryLimitJoint(bat_bodies[0].body,bat_bodies[1].body,0,0)
space.add(j1,j2)

Это ============= становится ================> ЭтоНачнитеКонец
У меня есть функция, которая рисовала эти зеленые круги на позициях тела

1 ответ

Решение

Лучший способ создать сложную фигуру в пимунке - это просто прикрепить фигуры к одному и тому же телу. Поэтому, если у вас нет веской причины, почему вы хотите их разделить, я предлагаю вам попробовать добавить обе фигуры к одному и тому же телу.

Однако иногда вы можете захотеть сделать что-то еще, например, разбить объекты. Я сам ничего не реализовал, но Скотт (Бурундук) пишет в этом посте http://chipmunk-physics.net/forum/viewtopic.php?f=1&t=2420&p=10644&hilit=breakable котором используется PivotJoint и GearJoint может быть хорошей идеей, чтобы держать два тела вместе.

Другие вопросы по тегам