pygame中me的移动问题
本帖最后由 裕~ 于 2022-1-4 21:44 编辑对飞机的rect位置参数进行加减时,self.speed如果设置为0.3或者0.5就不能加只能减,self.speed设置为1时就是正常的,我主要是想解答这个疑惑
当self.speed为0.3时,如果把right和bottom中的self.speed改成1,可以向对的方向移动;如果把right和bottom中的+改成-,可以向左和上移动;如果把left和top的-改成+,不能移动;如果在self.speed前加-号,结果和上面相同。
main函数中:
# 控制myself移动
if animal.active:
key_pressed = pygame.key.get_pressed()
if key_pressed:
myself.move_top()
if key_pressed:
myself.move_left()
if key_pressed:
myself.move_bottom()
if key_pressed:
myself.move_right()
me模块中:
class Me(pygame.sprite.Sprite):
def __init__(self,bg_size):
pygame.sprite.Sprite.__init__(self)
self.t1_top = pygame.image.load('me_images/me.png').convert_alpha()
self.t1_left = pygame.transform.rotate(self.t1_top, 90)
self.t1_bottom = pygame.transform.rotate(self.t1_top, 180)
self.t1_right = pygame.transform.rotate(self.t1_top, 270)
self.image = self.t1_top
self.width = bg_size
self.height = bg_size
self.rect = self.image.get_rect()
self.rect.left = random.randint(0, self.width - self.rect.width)
self.rect.top = random.randint(0, self.height - self.rect.height)
self.speed = 1
self.accelerate = 0.1
def move_left(self):
self.image = self.t1_left
if self.rect.left > 0:
self.rect.left -= self.speed
def move_right(self):
self.image = self.t1_right
if self.rect.left < self.width - self.rect.width:
self.rect.left += self.speed
def move_top(self):
self.image = self.t1_top
if self.rect.top > 0:
self.rect.top -= self.speed
def move_bottom(self):
self.image = self.t1_bottom
if self.rect.top < self.height - self.rect.height:
self.rect.top += self.speed
页:
[1]