Я проектирую игру, однако я отложил свою разработку, чтобы сосредоточиться на столкновениях спрайтов в форме кругов.
Я не уверен на 100%, как работает команда 'pygame.sprite.collide_circle'однако в скобках я включил его в переменную Collidecheck, а также создал новую переменную с именем 'collided', чтобы затем включить в Collidecheck как 'collided = None'.
В классе My Ball используются объекты ball, представляющие собой круги.Есть два, которые должны взаимодействовать друг с другом: шар и лаб.
class Ball(pygame.sprite.Sprite):
def __init__(self, width, height, herex, herey):
super().__init__()
self.image = pygame.Surface([width, height])
self.image.fill(WHITE)
self.image.set_colorkey(WHITE)
self.rect = self.image.get_rect()
pygame.draw.circle(self.image, BLACK, [int(width/2),int(height/2)], int(width/2), 10)
self.rect.x = herex
self.rect.y = herey
def moveRight(self, pixels):
self.rect.x += pixels
def moveLeft(self, pixels):
self.rect.x -= pixels
def moveUp(self, pixels):
self.rect.y -= pixels
def moveDown(self, pixels):
self.rect.y += pixels
2 круга находятся в спрайтовых группах, как я их практикую
ball = Ball(100, 100, 50, 50)
llab = Ball(100, 100, 350, 250)
g = pygame.sprite.Group(ball)
h = pygame.sprite.Group(llab)
Внутри основного игрового цикла мяч движетсятак что я могу проверить хитбоксы.Если вы наблюдаете, как консоль печатает проверку на столкновение, вы можете видеть, как она работает.
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
ball.moveLeft(5)
ballFollow.moveLeft(5)
if keys[pygame.K_RIGHT]:
ball.moveRight(5)
ballFollow.moveRight(5)
if keys[pygame.K_UP]:
ball.moveUp(5)
ballFollow.moveUp(5)
if keys[pygame.K_DOWN]:
ball.moveDown(5)
ballFollow.moveDown(5)
Collidecheck = pygame.sprite.spritecollide(ball, h, False, pygame.sprite.collide_circle)
print(Collidecheck)
screen.fill(RED)
g.draw(screen)
h.draw(screen)
Я изначально ожидал увидеть в консоли столкновение между мячом и ударом, но мяч и удар действительно имеютбольшой хитбокс который я не хочу.Я хочу, чтобы только хитбоксы обоих этих кругов расширялись до их реальной формы и не увеличивались.Кажется, их хитбоксы в два раза больше их размеров, я думаю, хотя я не уверен,
PS Я понимаю, что мог бы использовать математику и, возможно, мне пришлось бы это задаться, мне было интересно, если бы кто-нибудь лучше знал функции спрайта, чтобы помочь мне.