Obraz a rect na obrázku nie sú na seba, sú posunuté. čo je zle

0

Otázka

Keď som nakresliť obrázok a rect Wof obrázky, potom ľavom hornom rohu obdĺžnik je presne v strede 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

Najlepšiu odpoveď

1

Len návrat new_rect z blitRotateCenter a používať to, aby nakreslite obdĺžnik:

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)

Avšak, ak chcete nakresliť otočené obdĺžnik, pozrite si Stále otáčať rect z otáčať obraz v Pygame.

2021-11-23 05:24:46

Ale nedá sa používať new_auto_rect za kolíziu zistený.Čo môžem to podarí?
Joachim

Prečo nemôžeš ho použiť na detekciu kolízie?
Rabbid76

Prečo nemôžeš ho použiť na detekciu kolízie? Môžete uložiť new_auto_rect v self.rect. self.rect = new_auto_rect. Alebo si hľadať PyGame kolízii s maskami?
Rabbid76

som nastaviť auto.rect = new_auto_rect. Ale obraz spustiť cez obrazovku. Myslím si, že musím do centra to? Kde? ak to funguje, som sa chcete použiť hity = pygame.sprite.spritecollide( auto, pozemok, False, pygame.sprite.collide_mask)
Joachim

@Joachim Č nemusíte center sa. To je stred. Používa sa na nakresliť obdĺžnik na obrazovke. Tu je niečo spackal v kóde. Domnievam sa, ak chcete položiť novú otázku.
Rabbid76

V iných jazykoch

Táto stránka je v iných jazykoch

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