Изображение и прямая часть изображения не находятся друг на друге, они сдвинуты. что не так

0

Вопрос

Когда я рисую изображение и прямую часть изображений, верхний левый угол прямоугольника находится точно в центре изображения.

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

Лучший ответ

1

Просто вернись new_rect От blitRotateCenter и используйте его, чтобы нарисовать прямоугольник:

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)

Однако, если вы хотите нарисовать повернутый прямоугольник, см. раздел Получение повернутого прямоугольника повернутого изображения в Pygame.

2021-11-23 05:24:46

Но я не могу использовать new_auto_rect для обнаружения столкновения.Что я могу с этим сделать?
Joachim

Почему вы не можете использовать его для обнаружения столкновений?
Rabbid76

Почему вы не можете использовать его для обнаружения столкновений? Вы можете хранить new_auto_rect в self.rect. self.rect = new_auto_rect. Или вы ищете столкновение PyGame с масками?
Rabbid76

я установил auto.rect = new_auto_rect. Но изображение пробегает по экрану. Я думаю, мне нужно его центрировать? Куда? если это сработает, я хочу использовать hits = pygame.sprite.spritecollide( авто, земля, ложь, pygame.sprite.collide_mask)
Joachim

@Joachim Нет, вам не нужно центрировать его. Она центрирована. Он используется для рисования прямоугольника на экране. В вашем коде что-то не так. Я предлагаю задать новый вопрос.
Rabbid76

На других языках

Эта страница на других языках

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