2015-03-02 4 views
2

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

enter image description here

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

self.rect = pygame.rect.Rect(location, self.image.get_size()) 

Если я установить размер, используя ширину и высоту, я просто третье изображение

self.rect = pygame.rect.Rect(location, (32, 150)) 

Я действительно не хотел бы использовать идеальное столкновение пикселей, потому что это самое медленное обнаружение столкновения, поэтому у кого-то есть представление, как я могу достичь второй подход столкновения изображений с использованием Rect? Благодарю.

ответ

1

Кажется, что вы используете pygames, встроенный в модуль sprite. (Пожалуйста, поправьте меня, если я ошибаюсь)

Вы могли бы знать, что каждый спрайт состоит из image (который рисуется на поверхности) и rect объект (задает расположение и размер (!) Из image).

Как предположил Люк Тейлор, вы можете создать новый объектrect в вашем player классе ...

self.collideRect = pygame.rect.Rect((0, 0), (32, 150)) 

... и установить его местонахождение (в соответствии с графической) в

self.collideRect.midbottom = self.rect.midbottom 

Каждый вы должны изменить свою позицию player, вы должны также позвонить по этой линии, поэтому ваш self.collideRect объект прямой «перемещается» с вашим player на экране.

Для того, чтобы проверить, является ли точка (например, координаты мыши) находится внутри self.collideRect, вызовите

if self.collideRect.collidepoint(x, y) == True: 
    print("You clicked on me!") 
+0

Хорошая рекомендация, я понял, что, используя тот же прямоугольник, чтобы сделать изображение и сталкиваться объекты. используя новый прямоугольник и держите его связанным с изображением, я могу лучше обнаружить столкновение. Большое вам спасибо! –

0

Попробуйте рисовать совершенно новый прямоугольник отдельно от изображения, расположенного за изображением, но кто-то из его местоположений постоянно настроен на это, если изображение.

Смежные вопросы