Итак, я пытаюсь создать игру-головоломку с Python и Pygame, но у меня немного проблемы. Как сделать детектор столкновения, когда я использую blitted изображение для основного символа, а не прямое изображение? Я знаю, что у прямых изображений есть функции слева, справа, сверху и снизу (что было бы чрезвычайно полезно для обнаружения столкновений), но есть ли что-то подобное для блистающего изображения? Или мне просто нужно создать переменную для координат x и y + ширину/высоту изображения? Я пробовал это с использованиемОбнаружение столкновений Pygame
import pygame, sys
from pygame.locals import *
WINDOWWIDTH = 400
WINDOWHEIGHT = 300
WHITE = (255, 255, 255)
catImg = pygame.image.load('cat.png')
catx = 0
caty = 0
catRight = catx + 100
catBot = caty + 100
moveRight = False
pygame.init()
FPS = 40 # frames per second setting
fpsClock = pygame.time.Clock()
# set up the window
DISPLAYSURF = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), 0, 32)
pygame.display.set_caption('Animation')
while True: # the main game loop
DISPLAYSURF.fill(WHITE)
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
elif event.type == KEYDOWN:
if event.key in (K_RIGHT, K_w):
moveRight = True
elif event.type == KEYUP:
if event.key in (K_RIGHT, K_w):
moveRight = False
if catRight == WINDOWWIDTH:
moveRight = False
if moveRight == True:
catx += 5
DISPLAYSURF.blit(catImg, (catx, caty))
pygame.display.update()
fpsClock.tick(FPS)
Но catImg просто продолжал идти прямо за окном. Что я делаю не так? Заранее спасибо.
О, благодарю, это именно то, что я искал, я не знал, что catImg.get_width() существует. Вы отлично решили мою проблему. – user2874724
Я не знал, что 'get_width()' существует, то есть до тех пор, пока я не прочитаю [документацию] (http://pygame.org/docs/ref/surface.html). – martineau