Как мне заставить спрайт «стоять» на другом спрайте в pygame?

#python #pygame

#python #pygame

Вопрос:

У меня есть два спрайта, которые могут обнаруживать столкновения, но я не уверен, как я могу заставить спрайт моего персонажа «стоять» на моей платформе. Кажется, ничего из того, что я делал, не работает.

Ответ №1:

Если у вас есть 2 pygame.Rect объекта, вы можете переместить 2-й прямоугольник на 1-й прямоугольник, установив bottom для 2-го прямоугольника top значение 1-го прямоугольника. С виртуальными атрибутами pygame.Rect это легко сделать:

 rect2.bottom = rect1.top
 

Или, если у вас есть 2 pygame.sprite.Sprite объекта:

 sprite2.rect.bottom = sprote1.rect.top
 

Если у вас есть 2 pygame.Surface объекта ( surf1 и surf2 ) и 2 соответствующие позиции ( x1 , y1 ) и ( x2 , y2 ), используйте get_rect() для создания pygame.Rect объектов из поверхностей. Переместите 2-й прямоугольник на 1-й прямоугольник и обновите положение 2-го прямоугольника:

 rect1 = surf1.get_rect(topleft = (x1, y1))
rect2 = surf2.get_rect(topleft = (x2, y2))

rect2.bottom = rect1.top
y2 = rect2.y