Image a rect obrazu nejsou na vrcholu navzájem, oni jsou posunuty. co je špatně

0

Otázka

Když jsem nakreslit obrázek a rect Wof obrázky, pak horní levý roh obdélníku je přesně ve středu 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

Nejlepší odpověď

1

Jen návrat new_rect z blitRotateCenter a používat to, aby nakreslit obdélník:

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)

Nicméně, pokud chcete nakreslit otočený obdélník, viz Stále otáčet rect otáčí obraz v Pygame.

2021-11-23 05:24:46

Ale nemohu použít new_auto_rect pro kolizi.Co mohu řídit?
Joachim

Proč nemůžeš použít pro detekci kolizí?
Rabbid76

Proč nemůžeš použít pro detekci kolizí? Můžete uložit new_auto_rect v self.rect. self.rect = new_auto_rect. Nebo myslíte si, hledat PyGame kolize s maskami?
Rabbid76

jsem nastavit auto.rect = new_auto_rect. Ale obraz běží přes obrazovku. Myslím, že třeba do centra? Kde? pokud to funguje, chci použít hity = pygame.sprite.spritecollide( auto, země, False, pygame.sprite.collide_mask)
Joachim

@Joachim Ne, nemusíte do centra. Je na střed. Používá se nakreslit obdélník na obrazovce. Tam je něco podělal v kódu. Navrhuji položit nový dotaz.
Rabbid76

V jiných jazycích

Tato stránka je v jiných jazycích

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