Obraz i bezpośrednie część obrazu nie znajdują się na siebie, są przesunięte. co jest nie tak

0

Pytanie

Kiedy maluję obraz i prostą część zdjęć, lewy górny róg prostokąta znajduje się dokładnie w centrum obrazu.

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

Najlepsza odpowiedź

1

Po prostu wróć new_rect Od blitRotateCenter i użyj go, aby narysować prostokąt:

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)

Jednak, jeśli chcesz narysować obrócony prostokąt, patrz sekcja Uzyskiwanie obrócony prostokąt obrócony obraz w Pygame.

2021-11-23 05:24:46

Ale nie mogę korzystać z new_auto_rect do wykrywania kolizji.Co mogę z tym zrobić?
Joachim

Dlaczego nie można go używać do wykrywania kolizji?
Rabbid76

Dlaczego nie można go używać do wykrywania kolizji? Można przechowywać new_auto_rect w self.rect. self.rect = new_auto_rect. Lub szukasz zderzenie PyGame z maskami?
Rabbid76

zainstalowałem auto.rect = new_auto_rect. Ale obraz przemieszcza się po ekranie. Myślę, że muszę go zobaczyć? Gdzie? jeśli to się uda, chcę użyć hits = pygame.sprite.spritecollide( auto, ziemia, kłamstwo, pygame.sprite.collide_mask)
Joachim

@Joachim Nie, nie trzeba wyśrodkować go. Ona jest wyśrodkowany. Jest on używany do rysowania prostokąta na ekranie. W kodzie jest coś nie tak. Proponuję zadać nowe pytanie.
Rabbid76

W innych językach

Ta strona jest w innych językach

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