es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo hacer que un rectángulo en pygame se detenga en una posición específica?

Me gustaría que mi sprite se detenga en una posición específica, por ejemplo, (20,100), mientras comienza desde la posición de inicio, digamos (100,100). ¿Podrías ayudarme con esto?

class Personaje(pygame.sprite.Sprite):
    def __init__(self, x, y, image):
        super().__init__()
        self.x = x
        self.y = y
        self.image = image
        self.rect = self.image.get_rect()
        self.rect.center = (x, y)
        # Supongamos que inicialmente x=100, y=100

    def mover_personaje(self):
        self.x += -1  # Le indico al personaje que se mueva hacia la izquierda 
        if self.rect.center == (20,100):
            pass # Aqui es donde quiero que el rectángulo deje de moverse
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para hacer que tu sprite se detenga en la posición (20,100), puedes modificar el método move_character() para comprobar la posición actual del sprite y detenerlo cuando alcance la posición deseada.

    Aquí tienes un ejemplo de fragmento de código que puedes utilizar:

    class Character(pygame.sprite.Sprite):
        def __init__(self, x, y, image):
            super().__init__()
            self.image = image
            self.rect = self.image.get_rect()
            self.rect.center = (x, y)
            self.target_pos = (20, 100)  # la posición donde se detendrá el movimiento
    
        def move_character(self):
            if self.rect.centerx > self.target_pos[0]:
                self.rect.centerx += -1   # mover a la izquierda
            if self.rect.centery != self.target_pos[1]:
                # mover verticalmente solo si no se encuentra en la coordenada y objetivo
                self.rect.centery += 1 if self.rect.centery < self.target_pos[1] else -1
    

    En este ejemplo, he añadido un atributo target_pos a la clase Character que especifica la posición en la que quieres que el sprite se detenga. Luego, en el método move_character(), compruebo si el sprite aún no ha alcanzado la posición objetivo y lo muevo en consecuencia.

    Ten en cuenta que he utilizado dos declaraciones if separadas para mover el sprite horizontal y verticalmente, ya que tienen condiciones de terminación diferentes. Puedes modificar este código según tu caso de uso específico.

Comments are closed.