2013-02-02 35 views
1

我已經建立了一個簡單的遊戲引擎,玩家和敵人類僅對象。
我想讓他們精靈,以便我可以檢查collison,只是一般管理他們更好,但我似乎無法找到任何好的例子,如何做到這一點...
我已經擴大了球員和敵人班級延長pygame.sprite.Sprite班。
但是,當我在兩者之間檢查碰撞,
它說,這兩個類需要rects(矩形)。我如何和一個矩形分配到pygame的精靈?

我不知道如何做到這一點?

+0

對於碰撞的精靈教程查看:http://www.pygame.org/docs/tut/SpriteIntro.html,http://kai.vm.bytemark.co.uk/~piman/writing /sprite-tutorial.shtml, – ninMonkey

回答

2

精靈都是對象,你需要的每件事都已經包括在精靈類字段。您需要明確設置精靈的邊界矩形。

從pygame的文檔:

pygame.sprite.spritecollide find Sprites in a Group that intersect another Sprite pygame.sprite.spritecollide(sprite, group, dokill, collided = None): return Sprite_list

Return a list containing all Sprites in a Group that intersect with another Sprite. Intersection is determined by comparing the Sprite.rect attribute of each Sprite.

所以你需要sprite.rect設置爲你希望你的精靈碰撞是基於矩形。通常你可以使用你的精靈圖像的大小作爲碰撞矩形。

s.image = pygame.image.load("sprite.png").convert() #load a sprite image 
s.rect = b.image.get_rect() # set collision rectangle 
+0

謝謝了!很好地解釋:) – skeetDroid

+0

我得到這個錯誤,現在,我已經給這兩個班self.rect變種,我不明白這一點....如果pygame.sprite.collide_rect(Player.Rect,Enemy.Rect)==真: AttributeError錯誤:類型的對象「球員」有沒有屬性「矩形」 – skeetDroid

+1

發佈你的類代碼。聽起來像你的玩家/敵人構造函數不會調用sprite/set rect。而代碼將是'如果pygame.sprite.collide_rect(player.rect,enemy.rect):打印「yes'' – ninMonkey