第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使這個(gè) pygame 精靈的旋轉(zhuǎn)(以中心為中心)起作用?

如何使這個(gè) pygame 精靈的旋轉(zhuǎn)(以中心為中心)起作用?

慕工程0101907 2021-06-15 17:18:44
我很難使用 pygame 創(chuàng)建單個(gè)精靈旋轉(zhuǎn)。我正在按照此代碼(https://stackoverflow.com/a/47688650/5074998)獲取精靈的中心旋轉(zhuǎn)。這是我當(dāng)前的代碼:import pygameFPS: int = 100W = 600H = 400MAGENTA = (255, 0, 255)BLACK = (0, 0, 0)pygame.init()screen = pygame.display.set_mode([W, H])pygame.display.set_caption("Cars")clock = pygame.time.Clock()class sp():    def __init__(self):        self.image = pygame.Surface((122, 70), pygame.SRCALPHA)        pygame.draw.polygon(self.image, pygame.Color('dodgerblue1'),                            ((1, 0), (120, 35), (1, 70)))        self.orig_image = self.image        self.rect = self.image.get_rect(center=[W / 2, H / 2])        self.angle = 0    def update(self):        self.angle += 2        self.rotate()        screen.blit(self.image, [100, 100])    def rotate(self):        self.image = pygame.transform.rotozoom(self.orig_image, self.angle, 1)        self.rect = self.image.get_rect(center=self.rect.center)sp1 = sp()out = pause = Falsewhile not out:    clock.tick(FPS)    for event in pygame.event.get():        if event.type == pygame.QUIT or event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:            out = True        if event.type == pygame.KEYDOWN:            if event.key == pygame.K_SPACE:                pause = not pause    if not pause:        screen.fill(BLACK)        sp1.update()        pygame.display.flip()但我不明白為什么我會(huì)得到這個(gè):
查看完整描述

1 回答

?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊

發(fā)生這種情況是因?yàn)槟?code>self.image在位置[100, 100]而不是self.rect(這意味著在self.rect.topleft坐標(biāo)處)進(jìn)行blitting 。每次旋轉(zhuǎn)后圖像的大小都不同,如果您只是在相同的左上角坐標(biāo)處對(duì)其進(jìn)行 blit,則圖像會(huì)像這樣擺動(dòng),因?yàn)槊恳粠闹行亩荚谄渌胤?。您可以通過(guò)在[100, 100]以下位置繪制邊界矩形來(lái)看到:

pygame.draw.rect(screen, (255, 0, 0), [(100, 100), self.image.get_size()], 1)

為了解決這個(gè)問(wèn)題,你必須每次都創(chuàng)建一個(gè)新的矩形并將其center坐標(biāo)設(shè)置center為前一個(gè)矩形的坐標(biāo)。這也將調(diào)整topleft坐標(biāo)(圖像被 blit 的位置),以便圖像保持居中。然后在 rect 處 blit 圖像:

screen.blit(self.image, self.rect)

繪制self.rect以查看topleft坐標(biāo)如何一直變化而中心不會(huì)移動(dòng):

pygame.draw.rect(screen, (255, 0, 0), self.rect, 1)


查看完整回答
反對(duì) 回復(fù) 2021-06-22
  • 1 回答
  • 0 關(guān)注
  • 484 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)