Я делаю шутер, и в моей игре я хочу, чтобы, как только игрок столкнулся с коробкой утилит, ящик утилит сбросил все ваши боеприпасы и пистолет, а затем упал в воду и исчез.Но у меня много проблем с коллизиями, потому что они либо происходят не в том месте, либо не происходят, когда игрок касается коробки с утилитой.
Я уже пробовал типичную проверку коллизий.И заставили консоль или оболочку в этом случае распечатать True, и он никогда не распечатывал ее.
class Player:
def __init__(self, x, y, pic_one):
self.xpos = x
self.ypos = y
self.speed_y = 0
self.speed_x = 0
self.GRAVITY = 0.9
self.picture = pic_one
self.rect = self.picture.get_rect()
self.rect.x = self.xpos
self.rect.y = self.ypos
def draw(self):
screen.blit(self.picture, (self.xpos, self.ypos))
def is_collided_with(self, sprite):
return self.rect.colliderect(sprite.rect)
class Box():
def __init__(self, x, y, box_picture):
self.xpos = x
self.ypos = y
self.speed_y = 0
self.speed_x = 0
self.picture = box_picture
self.picture = pygame.transform.scale(self.picture, (60, 60))
self.rect = self.picture.get_rect()
self.rect = self.rect.inflate(70, 70)
def update(self):
self.xpos += self.speed_x
self.ypos += self.speed_y
def draw(self):
screen.blit(self.picture, (self.xpos, self.ypos))
def is_collided_with(self, sprite):
return self.rect.colliderect(sprite.rect)
default_box = Box(500, 350, box_pic)
player_one = Player(400, 200, player_one_first_pic)
while True:
[...]
if player_one.is_collided_with(default_box):
print(True)
else:
print(False)
Ожидаемые результаты состоят в том, что как только игрок столкнется с полем, он напечатает True, а если нет - False.
Вот диаграмма, которую я имею в виду. На этой диаграмме она должна просто напечатать True, а вместо этого вывести False