Мой хитбокс не получает истинное местоположение. Как я могу решить это? - PullRequest
1 голос
/ 06 апреля 2020

Извините за плохой английский sh: (

Это моя функция хитбокс:

def hitbox(self):
    return (self.x - 50,self.y - 50),(self.x + 50,self.y + 50)

Я использую это для показа Hitbox:

pygame.draw.rect(screen,(122,122,0),(self.hitbox()[0],self.hitbox()[1]),3)

Но мой спрайт, когда go вправо, хитбокс становится все больше и больше вправо, а когда go вниз, хитбокс становится больше высоты вниз.

Как я могу решить эту проблему?

1 Ответ

1 голос
/ 06 апреля 2020

PyGame Rect принимает четыре аргумента ( x, y, width, height ). Ваша hitbox() функция возвращает прямоугольник, определенный как ( x1, y1, x2, y2 ).

. Возможно, наилучшим подходом было бы вернуть Rect из вашей функции. Это также позволит вам использовать отличные функции обработки столкновений PyGame Rect .

BOX_WIDTH  = 100
BOX_HEIGHT = 100

def hitbox(self):
     # Create the box at 0,0 with correct size
     box_rect = pygame.Rect( 0, 0, BOX_WIDTH, BOX_HEIGHT )
     # transpose it around the current position
     box_rect.center = ( self.x, self.y )
     return box_rect

А затем нарисовать Rect:

pygame.draw.rect( screen, ( 122, 122, 0 ), self.hitbox(), 3 )

Я думаю, что это будет Хорошей идеей будет сохранить Rect в качестве члена класса. Затем, чтобы переместить спрайт, просто обновите объект self.box_rect напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...