裕~ 发表于 2021-12-26 13:49:37

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]
查看完整版本: pygame中me的移动问题