potrebujem zistiť, akou najľahšou cestou sa dá zistiť kolísia medzi kruhom a obdĺžnikom. Zatiaľ čo som hľadal na nete, našiel som toto
Kód: Vybrať všetko
for block in self.blocks:
if self.collideBlock(block):
self.blocks.remove(block)
self.ball.speedy *= -1
def clamp(self, x, left, right):
if x < left:
return left
elif x > right:
return right
else:
return x
def collideBlock(self, block):
rect = block.image.get_rect()
x = self.clamp(self.ball.x, rect.left, rect.right)
y = self.clamp(self.ball.y, rect.bottom, rect.top)
distX = self.ball.x - x;
distY = self.ball.y - y;
if distX ** 2 + distY ** 2 < self.ball.radius ** 2:
return True
else:
return FalseRobí to blbosti, a zakaždým vracia False. A záhadou je, že po 10 sekundách vráti true a všetky bloky v hre vymaže.
Ďakujem za rady.
//autoeditácia príspevku (28 Jan 2012, 18:25)
Stačil by mi aj nejaký vzorec, ktorým by som to najľahšie vypočítal. Zatiaľ to robím primitývnym spôsobom
Kód: Vybrať všetko
if ((self.ball.x >= block.x) and (self.ball.x <= block.x) and
(self.ball.y >= block.y) and (self.ball.y <= block.y + block.height)):