2015-03-02 126 views
2

如何在pygame中定義比圖像小的矩形碰撞檢測? 我想有一個像第二個圖像一樣的碰撞模式,但是當試圖在方法rect中設置寬度和高度時,我正在剪切圖像。pygame矩形碰撞比圖像更小

enter image description here

當我嘗試使用圖像的大小來設置,我在紅

self.rect = pygame.rect.Rect(location, self.image.get_size()) 

如果我設置使用的寬度和高度尺寸的碰撞檢測,我只是有第三圖像

self.rect = pygame.rect.Rect(location, (32, 150)) 

我真的不希望使用像素完美的碰撞,因爲是最慢的碰撞檢測,所以有人有一些想法,我怎麼能達到秒使用Rect的ond圖像碰撞方法?謝謝。

回答

1

看來你使用的是建立在sprite模塊中的pygames。 (請糾正我,如果我錯了)

你可能知道,每個精靈組成的image(這是畫的表面上)和rect對象(設置位置和大小(!)的image的)。

由於盧克·泰勒的建議,你可以在你的player類中創建一個rect對象...

self.collideRect = pygame.rect.Rect((0, 0), (32, 150)) 

...並設置其位置(根據您的圖形),以

self.collideRect.midbottom = self.rect.midbottom 

每當你改變你的位置player你也必須調用這一行,所以你的self.collideRect矩形對象「移動」與屏幕上的player

爲了測試一個點(例如鼠標座標)是self.collideRect內,呼叫

if self.collideRect.collidepoint(x, y) == True: 
    print("You clicked on me!") 
+0

尼斯建議,我發現我用的是相同的矩形繪製圖像和碰撞的對象。使用一個新的矩形,並保持它與圖像鏈接,我可以有一個更好的碰撞檢測。 非常感謝! – 2015-03-03 23:49:16

0

嘗試從圖像後面的圖像中分離出一個全新的矩形,但是如果圖像的位置不變,則位置會不斷設置。