正如标题所说,我如何加入/约束2个pymunk体/形状,以便它们不会作为一个单独的物体? 例如,在这种情况下,我有一个板球棒,由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)
此 ============= 变为 ================> :此
我有一个功能,在身体位置绘制绿色圆圈
答案 0 :(得分:2)
在pymunk中构建复杂形状的最佳方法是将形状附加到同一个体上。因此,除非你有充分的理由将它们分开,我建议你尝试将两种形状添加到同一个体内。
但是,有时您可能想要做其他事情,例如能够破坏对象。我自己并没有真正实现任何目标,但斯科特(花栗鼠)在这篇文章http://chipmunk-physics.net/forum/viewtopic.php?f=1&t=2420&p=10644&hilit=breakable#p10644中写道,使用PivotJoint和GearJoint可能是将两个身体保持在一起的好主意。