我正在做一個簡單的Breakout/Arkanoid遊戲來學習pygame。我遇到了槳和球的矩形不能正確碰撞的問題。我還注意到,如果我在兩塊磚之間拍攝球,即使球精靈視覺上與磚塊重疊,球也不會與磚碰撞。這個片段,如果從球的.update
方法,它通過槳和磚的列表。Pygame rect.contains碰撞未檢測到
new_pos = self.__calc_pos()
# Check for collision with walls
if not self.area.contains(new_pos):
self.angle = -self.angle
new_pos = self.__calc_pos()
else:
# Check for collision with paddle
if paddle.rect.contains(new_pos):
self.angle = -self.angle
new_pos = self.__calc_pos()
# Check for collision with bricks
for brick in bricks:
if brick.rect.contains(new_pos):
self.angle = -self.angle
new_pos = self.__calc_pos()
brick.kill()
bricks.remove(brick)
self.rect = new_pos
的.__calc_pos
方法:
def __calc_pos(self):
new_x = int(math.cos(math.radians(self.angle))) * self.speed
new_y = -int(math.sin(math.radians(self.angle))) * self.speed
return self.rect.move(new_x, new_y)
你的'.contains()'方法是什麼樣的? – ospahiu
'contains'檢查一個rect是否完全位於另一個rect內 - 如果一個對象只部分觸及其他對象,則它不成立。使用'colliderect()' – furas