mein Spieler bewegt sich in einer 640x480 umgebung
das spielfeld ist 1280x960
auf dem spielfeld befinden sich nicht passierbare RECT's die in einer liste stehen
wenn ich nun das spielfeld verschiebe müsste sich ja auch die liste mitbewegen
oder mach ich da einen denkfehler
mit der self.colidelist(blockt_list) kann ich da nix anfangen
SCREENRECT = Rect(0, 0, 640, 480)
PLAYRECT = Rect(0, 0, 1280, 960)
mittels self.movex self.movey
könnte man alle coordinalten der block liste verschieben bei jedem move
gibts da eine andere lösung
BIN FÜR ALLES OFFEN
PLAYRECT soll noch grösser werden mindestens *3
Code: Alles auswählen
def move_vertical(self, moving_vertical):
global backgroundx,backgroundy
if moving_vertical == 1 and self.movey < PLAYRECT.bottom and not(self.rect.centery <(SCREENRECT.bottom-(2*self.rect.height))):
backgroundy -= self.speed
self.movey += self.speed
elif moving_vertical == -1 and self.movey > SCREENRECT.bottom and not(self.rect.centery >(SCREENRECT.top+(2*self.rect.height))):
backgroundy += self.speed
self.movey -= self.speed
else:
self.rect.move_ip(0 ,moving_vertical*self.speed)
self.rect = self.rect.clamp(SCREENRECT)
if self.rect.collidelist(blocked_tile_list) != -1:
self.rect.move_ip(0 ,(moving_vertical*-1)*self.speed)
def move_horizontal(self, moving_horizontal):
global backgroundx,backgroundy
if moving_horizontal == 1 and self.movex < PLAYRECT.right and not(self.rect.centerx <(SCREENRECT.right-(2*self.rect.height))):
backgroundx -= self.speed
self.movex += self.speed
elif moving_horizontal == -1 and self.movex > SCREENRECT.right and not(self.rect.centerx >(SCREENRECT.left+(2*self.rect.height))):
backgroundx += self.speed
self.movex -= self.speed
else:
self.rect.move_ip(moving_horizontal*self.speed, 0)
self.rect = self.rect.clamp(SCREENRECT)
if self.rect.collidelist(blocked_tile_list) != -1:
self.rect.move_ip((moving_horizontal*-1)*self.speed, 0)
def rotate(self,rotate_left,rotate_right):
rotate = 0
center = self.rect.center
if rotate_left == 2:rotate = 5
if rotate_right == 2:rotate = -5
if self.angle == 360 or self.angle == 0:angle = 0
if rotate :
self.angle += rotate
self.images[0] = pygame.transform.rotate(self.original_a,self.angle)
self.images[1] = pygame.transform.rotate(self.original_b,self.angle)
self.rect = self.images[0].get_rect()
self.rect.center = center
if self.rect.collidelist(blocked_tile_list) != -1:
self.angle -= rotate
self.images[0] = pygame.transform.rotate(self.original_a,self.angle)
self.images[1] = pygame.transform.rotate(self.original_b,self.angle)
self.rect = self.images[0].get_rect()
self.rect.center = center