L'immagine e il rettangolo di una immagine non sono sulla parte superiore di ogni altro, si sono spostati. cosa c'è di sbagliato

0

Domanda

Quando ho disegnare l'immagine e la rect Wof le immagini, quindi l'angolo superiore sinistro del rettangolo si trova esattamente al centro dell'immagine.

def blitRotateCenter(image, left, top, angle):
    rotated_image = pygame.transform.rotate(image, angle)
    new_rect = rotated_image.get_rect(center = image.get_rect(center = (left, top)).center)
    screen.blit(rotated_image, new_rect)
self.image = pygame.image.load("Bilder/car.png")   
self.rect = self.image.get_rect()
    
blitRotateCenter(auto.image, auto.rect.x, auto.rect.y, auto.wagen_winkel)
draw.rect(screen,red,auto.rect)
pygame python
2021-11-22 07:36:57
1

Migliore risposta

1

Appena di ritorno new_rect da blitRotateCenter e usarlo per disegnare il rettangolo:

def blitRotateCenter(image, left, top, angle):
    rotated_image = pygame.transform.rotate(image, angle)
    new_rect = rotated_image.get_rect(center = image.get_rect(center = (left, top)).center)
    screen.blit(rotated_image, new_rect)
    return new_rect
new_auto_rect = blitRotateCenter(auto.image, auto.rect.x, auto.rect.y, auto.wagen_winkel)
draw.rect(screen,red, new_auto_rect)

Tuttavia, se si desidera disegnare un rettangolo ruotato, vedere Sempre ruotato rect di immagine ruotata in Pygame.

2021-11-23 05:24:46

Ma non posso usare il new_auto_rect per collisione rilevata.Cosa posso gestirlo?
Joachim

Perché non si può utilizzare per il rilevamento di collisione?
Rabbid76

Perché non si può utilizzare per il rilevamento di collisione? È possibile memorizzare new_auto_rect in self.rect. self.rect = new_auto_rect. O cercate PyGame collisione con le maschere?
Rabbid76

ho impostato auto.rect = new_auto_rect. Ma l'immagine di esecuzione oltre lo schermo. Penso che ho bisogno di centro? Dove? se funziona voglio usare hits = pygame.sprite.spritecollide( auto, terreni, False, pygame.sprite.collide_mask)
Joachim

@Gioacchino No non c'è bisogno di centrare il tutto. Non è centrata. Esso è utilizzato per disegnare un rettangolo sullo schermo. C'è qualcosa di sbagliato nel codice. Io suggerisco di chiedere una nuova domanda.
Rabbid76

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................