Возникли проблемы с столкновением масок в PygamePython

Программы на Python
Ответить
Anonymous
 Возникли проблемы с столкновением масок в Pygame

Сообщение Anonymous »

Я работаю над игрой, в которой моему персонажу придется перемещаться по пещере. Если персонаж сталкивается со стенами пещеры, его положение должно сброситься. Я сделал маску макета пещеры, оставив основной путь прозрачным. Я включу изображение. Когда я проверяю, конфликтуют ли маска персонажа и маска карты, он говорит, что это так, даже если мой персонаж находится на правильном пути. Это определенно может быть проблемой со смещением, которую мне трудно понять. Как правильно проверить наличие коллизий?

Код: Выделить всё

class Character:
def __init__(self, x, y):
self.image = pygame.image.load("Player.gif").convert_alpha()
self.rect = self.image.get_rect()
self.topleft = (x, y)
self.mask = pygame.mask.from_surface(self.image)
def draw(self, screen):
screen.blit(self.image, self.rect)

def main():
pygame.init()

screen_size = width, height = 1200, 800
screen = pygame.display.set_mode(screen_size)

map = pygame.image.load("background.png").convert_alpha()
map_mask = pygame.mask.from_surface(map)
mask_image = map_mask.to_surface()

character = Character(50, 50)
character_mask = character.mask.to_surface()

clock = pygame.time.Clock()

is_playing = True
while is_playing:
for event in pygame.event.get():
if event.type == pygame.QUIT:
is_playing = False

keys = pygame.key.get_pressed()
if keys[pygame.K_w]:
character.rect.move_ip(0, -7)

if map_mask.overlap(character.mask, character.topleft):
print("colliding")

screen.fill((255,255,255))
screen.blit(mask_image, (0,0))
screen.blit(character_mask, (100, 200))
character.draw(screen)
pygame.display.update()
clock.tick(50)

pygame.quit()
sys.exit()

if __name__=="__main__":
main()
Изображение


Подробнее здесь: https://stackoverflow.com/questions/799 ... -in-pygame
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»