PyGame не проверяет изображения с прямоугольниками, а сталкивает прямоугольники с прямоугольниками. Таким образом, код должен отслеживать положение изображения, как если бы оно было прямоугольником .
Это довольно просто. Изначально получите прямоугольную форму изображения с .get_rect()
, это дает объекту PyGame rect
объект. Тогда код должен только перемещаться и сталкиваться с прямоугольником, но также должен обеспечивать, чтобы изображение всегда рисовалось по координатам прямоугольника, чтобы все синхронизировалось.
import pygame,sys
from pygame.locals import *
from random import randint
pygame.init()
ventana=pygame.display.set_mode((1200,600))
pygame.display.set_caption("Jueguiño")
imageVida= pygame.image.load("vida.jpg")
vidaRect = imageVida.get_rect() # <-- Get the Image's Rectangle
posX= randint(0,1200)
posY= randint(0,0)
vidaRect.center = ( posX, posY ) # <-- Position the Rectangle
rectangulo=pygame.Rect(0,0,100,50)
velocidad=0.5
Blanco=(255,255,255)
while True:
ventana.fill(Blanco)
ventana.blit( imageVida, ( vidaRect.x, vidaRect.y ) ) # <-- Draw at the Rectangle
pygame.draw.rect(ventana,(180,70,70),rectangulo)
rectangulo.left,rectangulo.top=pygame.mouse.get_pos()
if rectangulo.colliderect( vidaRect ): # <-- Collide-test the Rectangle
velocidad=0
print("Collision!")
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if posY<1200:
posY+=velocidad
pygame.display.update()
Вероятно, полезно прочитать документацию по PyGame Спрайт Класс . Это полный набор функций для обработки именно такой работы. Сначала это немного сложнее, но потом значительно упрощает последующую работу - например, сталкивающиеся группы спрайтов. Есть многочисленные примеры использования спрайтов в ответах PyGame на SO.