2

タイトルが示すように、2 つのピムンク ボディ/シェイプを結合/拘束して、1 つのオブジェクトとして機能しないようにするにはどうすればよいですか??
たとえば、この場合、クリケットのバットがあり、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)

これ=============になります================>これ 始める終わり
には、体の位置に緑色の円を描く機能があります

4

1 に答える 1

2

pymunkで複雑な形状を作成する最良の方法は、同じボディに形状をアタッチすることです。したがって、それらを分離する正当な理由がない限り、同じボディに両方の形状を追加してみることをお勧めします。

ただし、オブジェクトを壊すなど、他のことをしたい場合もあります。私は実際には何も実装していませんが、(Chipmunkの)Scottはこの投稿にPivotJointとGearJointは、2つのボディを一緒に保つための良いアイデアかもしれません。

于 2013-03-18T16:54:59.847 に答える