我正在试着让游戏中的玩家/精灵从按键"左"和"右"切换.然而,当我这样做的时候,精灵缩小了(保留了它的Hitbox),有人能帮忙吗?
class Player(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
img_player = pygame.image.load("../graphics/left_player.png")
self.image = pygame.transform.scale(img_player,(50, 50))
self.surf = self.image
self.rect = self.surf.get_rect()
self.pos = vec((10, 360))
self.vel = vec(0,0)
self.acc = vec(0,0)
self.jumping = False
self.score = 10
def move(self):
self.acc = vec(0,0.5)
pressed_keys = pygame.key.get_pressed()
if pressed_keys[K_LEFT]:
self.acc.x = -ACC
if pressed_keys[K_RIGHT]:
self.acc.x = ACC
self.acc.x += self.vel.x * FRIC
self.vel += self.acc
self.pos += self.vel + 0.5 * self.acc
if self.pos.x > WIDTH:
self.pos.x = 0
if self.pos.x < 0:
self.pos.x = WIDTH
self.rect.midbottom = self.pos
def jump(self):
hits = pygame.sprite.spritecollide(self, platforms, False)
if hits and not self.jumping:
self.jumping = True
self.vel.y = -15 + game_upgrade_jump
pygame.mixer.Sound.play(jump_sound)
def cancel_jump(self):
if self.jumping:
if self.vel.y < -3:
self.vel.y = -3
def update(self):
hits = pygame.sprite.spritecollide(self ,platforms, False)
if self.vel.y > 0:
if hits:
if self.pos.y < hits[0].rect.bottom:
if hits[0].point == True:
hits[0].point = False
self.score += (1 + game_upgrade_points)
print('score changed: ', self.score)
self.pos.y = hits[0].rect.top +1
self.vel.y = 0
self.jumping = False