Imagem e rect de uma imagem não estão em cima do outro, eles são deslocados. o que está errado

0

Pergunta

Quando eu desenhar a imagem e o rect Wof as imagens e, em seguida, no canto superior esquerdo do retângulo é exatamente no centro da imagem.

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

Melhor resposta

1

Basta retornar new_rect a partir de blitRotateCenter e usá-lo para desenhar o retângulo:

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)

No entanto, se você quiser desenhar uma rodada retângulo, consulte a Ficar rodado rect da imagem girada em Pygame.

2021-11-23 05:24:46

Mas eu não posso usar o new_auto_rect por colisão detectada.O que eu posso gerenciar isso?
Joachim

Por que você não pode usá-lo para detecção de colisão?
Rabbid76

Por que você não pode usá-lo para detecção de colisão? Você pode armazenar new_auto_rect no self.rect. self.rect = new_auto_rect. Ou você procura para PyGame colisão com máscaras?
Rabbid76

eu definida auto.rect = new_auto_rect. Mas a imagem executado sobre a tela. Eu acho que precisamos para o centro-lo? Onde? se funciona eu quero usar hits = pygame.sprite.spritecollide( auto, a terra, o Falso, o pygame.sprite.collide_mask)
Joachim

@Joachim não, você não precisa centro. Ele está centrado. Ele é usado para desenhar um retângulo na tela. Há algo confuso no seu código. Eu sugiro a você que faça uma nova pergunta.
Rabbid76

Em outros idiomas

Esta página está em outros idiomas

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