Как найти спрайт-центр в Pygame Python - PullRequest
0 голосов
/ 31 августа 2018

Я использую Python 3.6.5 на win32, и я хочу найти центр моего спрайта, чтобы расположить его на оси x именно так, как я хочу. Есть ли способ сделать это?

Дополнительная информация: версия пипса 18.0, компьютер Dell Inspiron 15, серия 3000. Я загрузил спрайт с помощью функции pygame.image.load().

1 Ответ

0 голосов
/ 03 сентября 2018
pygame.image.load()

Только загрузить изображение. Возможно, вам придется определить размер изображения с помощью

pygame.transform.scale()

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

В питоне позиции X и Y начинаются сверху слева. Таким образом, верхний левый угол вашего окна будет (0,0), а нижний правый будет (window_width, window_height). Это то же самое для всего вашего элемента в вашем коде.

Этот код печатает центр спрайта (или любое изображение):

import pygame

pygame.init()

display_width = 800  #define size of window
display_height = 600

img_pos_x = 100     #define position of image
img_pos_y= 100

img_size_x = 40     #define size of image
img_size_y = 40

img = pygame.image.load("image.png")                        #load image
img = pygame.transform.scale(img,(img_size_x,img_size_y))   #resize image
screen = pygame.display.set_mode((display_width, display_height)) #display window
gameExit = False

screen.blit(img, (img_pos_x,img_pos_y)) #display image

img_center = (img_pos_x + img_size_x/2, img_pos_y + img_size_y/2) #find image center

while not gameExit:
    for event in pygame.event.get():    #define what to do when game not quit
        if event.type == pygame.QUIT:
            gameExit = True
            pygame.quit()
            quit()

    print(img_center)       #print coordinates of image center

Этот код может быть изменен для различного использования, только для того, чтобы показать, как он работает. Надеюсь, вы понимаете, о чем я.

РЕДАКТИРОВАТЬ: для уточнения и исправления

эта строка:

img_center = (img_pos_x + img_size_x/2, img_pos_y + img_size_y/2)

найти верхнюю левую координату (x, y) изображения, верхняя правая - это x + ширина изображения, поэтому середина будет равна половине ширины изображения, и мы найдем среднюю координату, добавив половину ширины изображения к верхней левой координате. То же самое для координаты Y, оба (X, Y) будут указывать на середину любого изображения.

...