2017-07-04 12 views
1

以下は「テトリス」ゲームのための私のコードの一部です。Pygame 'groupcollide'?

私がしたいのは、落下した形状の底を衝突時に静的形状の頂点と同じ高さ(-1)にすることです。しかし、それはそのままですが、私は接触位置を動く形の底としてのみ設定できます。その結果、それは衝突する形に沈むように見える(これは全体の「ブロック」錯視を捨てる)。

stick = pygame.sprite.groupcollide(pieces_mobs, static_mobs, False, False, pygame.sprite.collide_mask) 

私は「groupcollide」タプルで第二の値にアクセスする方法のわからないので、これは私が現在使用しているものです -

-

for piece in pieces_mobs: 
    for instance in stick: 
     contact = instance.rect.bottom 
     instance.static(contact) 
    piece.update() 

これは私が欲しいロジックです

for piece in pieces_mobs: 
    for pieces, static in stick: 
     contact = static.rect.top 
     pieces.static(contact) 
    piece.update() 

おそらく単純ですが、私は例を見つけることができません。

答えて

2

pygameのドキュメントによると、groupcollideの出力は、キーが最初のグループのスプライトであり、値がキースプライトが衝突している2番目のグループのすべてのスプライトのリストです。あなたの目標を達成するために:

stick = pygame.sprite.groupcollide(pieces_mobs, static_mobs, False, False, pygame.sprite.collide_mask) 

for piece_mob, static_mob in stick.items(): 
    piece_mob.rect.bottom = static_mob[0].rect.top 
+0

私はそれが辞書であることに気づいていませんでした。ご協力いただきありがとうございます。 – TheJack