Я немного читал и заметил несколько предложений по использованию Rect
для выполнения столкновений в этой игре.Но я все еще беспокоюсь, что это не работает так, как написано.
В основном в этом клоне понг мой мяч будет отражаться от статических объектов, но когда я пытаюсь заставить его отражаться от моего объекта игрока, он идет правильночерез.Может кто-нибудь объяснить, почему это происходит?
class ball(object):
def __init__(self, x, y, radius, speedx, speedy):
self.x = x
self.y = y
self.radius = radius
self.speedx = speedx
self.speedy = speedy
def move(self):
##collide with vertical boundaries
if self.y > screenHeight - self.radius - 10:
self.speedy = self.speedy*-1
elif self.y < self.radius + 10:
self.speedy = self.speedy * -1
##collide with level walls
if self.x == topWall.x and topWall.y < self.y < topWall.y + topWall.frontHeight:
self.speedx = self.speedx * -1
elif self.x == midWall.x and midWall.y < self.y < midWall.y + midWall.frontHeight:
self.speedx = self.speedx * -1
elif self.x == botWall.x and botWall.y < self.y < botWall.y + botWall.frontHeight:
self.speedx = self.speedx * -1
##collide with player paddle
if (self.x + self.radius == player.x + player.width and
player.y <= self.y <= player.y + player.height):
self.speedx = self.speedx * -1
self.speedx = self.speedx * -1
Опять же, это работает для отскока от верхних / средних / ботволов, но не отскакивает от игрока.