Imagine și rect de o imagine nu sunt pe partea de sus a reciproc, ei sunt deplasate. ceea ce este greșit

0

Problema

Când am trage imaginea și rect Wof imaginile, apoi colțul din stânga sus al dreptunghiului este exact in centrul imaginii.

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

Cel mai bun răspuns

1

Doar întoarce new_rect din blitRotateCenter și să-l utilizați pentru a desena dreptunghiul:

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)

Cu toate acestea, dacă doriți să desenați un dreptunghi rotit, a se vedea Obtinerea rotit rect de imagine rotită în Pygame.

2021-11-23 05:24:46

Dar eu nu pot folosi new_auto_rect pentru detectat o coliziune.Ce pot să-l gestioneze?
Joachim

De ce nu poți să-l folosească pentru detectarea coliziunilor?
Rabbid76

De ce nu poți să-l folosească pentru detectarea coliziunilor? Puteți stoca new_auto_rect în self.rect. self.rect = new_auto_rect. Sau ai de căutare pentru PyGame coliziune cu măști?
Rabbid76

am setat auto.rect = new_auto_rect. Dar imaginea rula pe ecran. Cred că am nevoie de la centru? Unde? dacă funcționează vreau să utilizați hit = pygame.sprite.spritecollide( auto, terenuri, False, pygame.sprite.collide_mask)
Joachim

@Joachim Nici nu aveți nevoie de la centru. Este centrat. Acesta este utilizat pentru a desena un dreptunghi pe ecran. Acolo este ceva greșit în codul dumneavoastră. Am sugera pentru a pune o nouă întrebare.
Rabbid76

În alte limbi

Această pagină este în alte limbi

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