#python #pygame #sprite #pygame-surface
#питон #pygame #фея #pygame-поверхность
Вопрос:
Я хотел бы, чтобы мой спрайт остановился в определенной позиции, т. е. (20 100), начиная, скажем, с начальной позиции (100 100). Не могли бы вы помочь мне с этим?
class Character(pygame.sprite.Sprite): super().__init__() self.x=x self.y=y self.image=image self.rect.self.image.get_rect() self.rect.center=(x,y) #Assume initially x=100,y=100 def move_character(self): self.x =-1 #Telling the character to move left if self.rect.center==(20,100): pass #This is where I want the rect to stop moving
Ответ №1:
Вы меняете позицию до того, как проверите ее. Это абсолютно ничего не даст, кроме как изменить положение
Вместо этого вы можете проверить положение, прежде чем менять положение
def move_character(self): if self.rect.center == (20, 100): return # Stops the function here, does not change X self.x -= 1
Для этого существуют различные возможные решения, вы просто должны проверить позицию до того, как она изменится, а не после. Вы также должны что-то сделать, если оно перешло границу, как я сделал с return
заявлением.