player rotation remain when stoped

This commit is contained in:
grisel-davy 2020-04-19 23:37:28 -04:00
parent 0ae1d56bae
commit 244359fb9c

View file

@ -64,17 +64,18 @@ class Perso():
self.key_right = key_right
self.key_fire = key_fire
self.img = pygame.image.load(img_path+texture).convert_alpha()
self.perso_rect = self.img.get_rect()
self.mask = pygame.mask.from_surface(self.img)
self.img_perso = pygame.image.load(img_path+texture).convert_alpha()
self.perso = self.img_perso
self.perso_rect = self.perso.get_rect()
self.mask = pygame.mask.from_surface(self.img_perso)
self.canon = pygame.image.load(img_path+texture_canon).convert_alpha()
self.img_canon = pygame.image.load(img_path+texture_canon).convert_alpha()
self.canon = self.img_canon
self.canon_rect = self.canon.get_rect()
self.degres_perso = 0
self.degres_canon = 0
self.texture_proj = texture_proj
self.size = self.img.get_size()
self.projectiles = []
self.last_fire = time()
@ -122,13 +123,14 @@ class Perso():
def draw(self,surface):
#Calculate player rotation:
if self.speed[0]!=0:
self.degres_perso = -1*degrees(atan(self.speed[1]/self.speed[0]))
if self.speed[0] < 0:
self.degres_perso = 180+self.degres_perso
else:
self.degres_perso = ((self.speed[1]>0)*2-1)*-90
perso = pygame.transform.rotate(self.img,self.degres_perso)
if self.speed != [0,0]:
if self.speed[0]!=0:
self.degres_perso = -1*degrees(atan(self.speed[1]/self.speed[0]))
if self.speed[0] < 0:
self.degres_perso = 180+self.degres_perso
else:
self.degres_perso = ((self.speed[1]>0)*2-1)*-90
self.perso = pygame.transform.rotate(self.img_perso,self.degres_perso)
#Calculate canon rotation:
x_mouse, y_mouse = pygame.mouse.get_pos()
@ -137,17 +139,17 @@ class Perso():
self.degres_canon = -1*degrees(atan((y_mouse-self.posy_screen)/(x_mouse-self.posx_screen)))
if x_mouse < self.posx_screen:
self.degres_canon = 180+self.degres_canon
canon = pygame.transform.rotate(self.canon,self.degres_canon)
self.canon = pygame.transform.rotate(self.img_canon,self.degres_canon)
# Get rects
self.perso_rect = perso.get_rect()
self.canon_rect = canon.get_rect()
self.perso_rect = self.perso.get_rect()
self.canon_rect = self.canon.get_rect()
# Blits
surface.blit(perso,(self.posx_screen-self.perso_rect.center[0],self.posy_screen-self.perso_rect.center[1]))
hitbox = pygame.Rect(self.posx_screen-self.perso_rect.center[0],self.posy_screen-self.perso_rect.center[1],self.perso_rect[2],self.perso_rect[3])
surface.blit(self.perso,(self.posx_screen-self.perso_rect.center[0],self.posy_screen-self.perso_rect.center[1]))
#hitbox = pygame.Rect(self.posx_screen-self.perso_rect.center[0],self.posy_screen-self.perso_rect.center[1],self.perso_rect[2],self.perso_rect[3])
#print(hitbox)
surface.blit(canon,(self.posx_screen-self.canon_rect.center[0],self.posy_screen-self.canon_rect.center[1]))
surface.blit(self.canon,(self.posx_screen-self.canon_rect.center[0],self.posy_screen-self.canon_rect.center[1]))
#pygame.draw.rect(surface, (255,0,0), hitbox, 2)
def fire(self,name,texture):
@ -160,7 +162,7 @@ class Perso():
return((self.posx_screen-self.posx,self.posy_screen-self.posy))
class Projectile():
class Projectile(pygame.sprite.Sprite):
def __init__(self,name,texture,position,speed,angle):
self.name = name
@ -183,4 +185,4 @@ class Projectile():
self.deplacement[1]+surface.get_height()/2>surface.get_height()+self.img.get_height()):
return True
else:
return False
return False