如何制作精灵正确的路径



我正在尝试创建一个非常简单的模拟,该模拟使流星出现在屏幕的中间并移开...直到用户按下键。在按下键时,将路径动态纠正到新路径。

我尝试了两种不同的方法,首先是键盘,然后尝试了pygame.key.get_presse()函数,但是在这两种情况下,在我释放键后,图像" Meteor"再次下降到其原始路径。

我希望一个人可以表明我做错了什么。

到目前为止,我的代码:

import pygame,sys
from pygame.locals import *
from colors import *
import random

FPS = 30 
fpsClock = pygame.time.Clock()

pygame.init()
X_Display = 400
Y_Display = 400
DisplaySurf = pygame.display.set_mode((X_Display, Y_Display))
DisplaySurf.fill(Silver)
pygame.display.set_caption("Meteor")
X_Real_Max = X_Display/2
Y_Real_Max = Y_Display/2
X_Center = 0
Y_Center = 0
XMeteor = 40
YMeteor = 20
XCenterMeteor = 0
YCenterMeteor = 0
XPosMeteor = XCenterMeteor + (200 - (XMeteor/2))
YPosMeteor = YCenterMeteor + (200 - (YMeteor/2))
imgMeteor = pygame.image.load("DesktopimgMeteor.png")
VisEffect = 1.05

while True:
    XMeteor *= VisEffect
    YMeteor *= VisEffect
    XCenterMeteor *= VisEffect
    YCenterMeteor *= VisEffect
    XPosMeteor = XCenterMeteor + (200 - (XMeteor/2))
    YPosMeteor = YCenterMeteor + (200 - (YMeteor/2))
    #Pressed  = pygame.key.get_pressed()
    #if Pressed[pygame.K_w]:
        #YPosMeteor -= 10
    if XMeteor > 150:
        XMeteor = 40
        YMeteor = 20
        XCenterMeteor = random.randrange(-100, 100)
        YCenterMeteor = random.randrange(-100, 100)
        XPosMeteor = XCenterMeteor + (200 - (XMeteor/2))
        YPosMeteor = YCenterMeteor + (200 - (YMeteor/2))
    Meteor = pygame.transform.scale(imgMeteor, (int(XMeteor),int(YMeteor)))

    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        #if event.type == KEYDOWN:
            #if event.key == K_w:
                #YPosMeteor -= 50
        #elif event.type == KEYUP:
            #YPosMeteor = YPosMeteor

    DisplaySurf.blit(Meteor, (XPosMeteor, YPosMeteor))
    pygame.display.update()
    fpsClock.tick(FPS)
    DisplaySurf.fill(Silver)

您正在更新错误的变量。YPosMeteor每次通过循环都会被凝结,因此,当您更改该变量时,就没有持久的效果。您想更改YCenterMeteorYMeteor

最新更新