Okay,Pygame Collision mit wechselnden Sprites
Ich habe überall hingeschaut und kann immer noch nicht PyGame Kollisionen herausfinden. Ich habe zwei Sprites: Ein Lander und eine Mondoberfläche. Der Mond ist eine unebene Oberfläche mit einem transparenten Hintergrund, während der Lander ein Sprite ist, der sich durch Bilder mit L-, D-, UP-Tasten drückt.
Ich mache etwas falsch, wenn es um Kollisionserkennung kommt. Ansonsten alles in meinem Programm geht swimmingly
Das ist mein Landers Klasse:
class ShipClass(pygame.sprite.Sprite):
def __init__(self, image_file, position):
pygame.sprite.Sprite.__init__(self)
self.imageMaster = pygame.image.load(image_file)
self.image = self.imageMaster
self.rect = self.image.get_rect()
self.mask = pygame.mask.from_surface(self.imageMaster)
self.rect.topleft = position
## This doesn't work
# def checkCollision(self, Mask):
# if Mask.overlap_area
def update(self):
self.rect = self.image.get_rect()
Und das ist meine Mondoberfläche Klasse:
class MoonSurface(pygame.sprite.Sprite):
def __init__(self, image_file, position):
pygame.sprite.Sprite.__init__(self)
self.imageMaster = pygame.image.load(image_file).convert_alpha()
self.image = self.imageMaster
self.rect = self.image.get_rect()
self.rect.topleft = position
Was muss ich zu diesem so hinzufügen dass, während in meinem Spiel, wenn der Lander den Mond trifft, setzt er variablen Halt auf 1 und stürzt auf 1 ab? Ich plane auch Landeplätze mit dem MoonSurface Klasse hinzufügen und wenn es sie trifft nur stoppen Sätze 1.
Mein Sprite wie folgt verschoben:
speed = [0,0]
position = [width-524,height-718]
gravity = 0.05
StartingFuel = 100
done = False
while not done:
event = pygame.event.poll()
if event.type == QUIT:
pygame.quit()
sys.exit(0)
elif event.type == pygame.KEYDOWN:
if event.key == K_ESCAPE:
pygame.quit()
sys.exit(0)
else:
lander = ShipClass('lander.png', position)
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
lander = ShipClass('landerLeft.png', position)
# lander.set_colorkey(BLACK)
speed[0] += 0.3
fuel -= 1
if keys[pygame.K_RIGHT]:
lander = ShipClass('landerRight.png', position)
# lander.set_colorkey(BLACK)
speed[0] -= 0.3
fuel -= 1
if keys[pygame.K_UP]:
lander = ShipClass('landerUp.png', position)
# lander.set_colorkey(BLACK)
speed[1] -= 0.4
fuel -= 1
speed[1] += gravity
position[0] += speed[0]
position[1] += speed[1]
if position[0] < 0:
position[0] = width
elif position[0] > width:
position[0] = 0
screen.blit(lander.image, position)