MF8*_*MF8 5 python pygame python-3.x
即使释放钥匙,我的精灵仍会继续移动。释放箭头键时如何阻止精灵移动?
这是我的Paddle Sprite课。在这里,我给了桨一个速度,按下该键时应该将速度添加到精灵中。
#Paddle sprite
class Paddle(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((90,20))
self.image.fill(white)
self.rect = self.image.get_rect()
self.rect.centerx = (width//2)
self.rect.bottom = height-15
self.speedx = 0
def update(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.speedx = -5
if keys[pygame.K_RIGHT]:
self.speedx = 5
self.rect.x+=self.speedx
Run Code Online (Sandbox Code Playgroud)
我将所有的精灵添加到了精灵组
#All elements of the game
all_sprites = pygame.sprite.Group()
paddle = Paddle()
all_sprites.add(paddle)
Run Code Online (Sandbox Code Playgroud)
这是主循环。我认为有一种循环将速度增加到子画面上,但我找不到。
#Paddle sprite
class Paddle(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((90,20))
self.image.fill(white)
self.rect = self.image.get_rect()
self.rect.centerx = (width//2)
self.rect.bottom = height-15
self.speedx = 0
def update(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.speedx = -5
if keys[pygame.K_RIGHT]:
self.speedx = 5
self.rect.x+=self.speedx
Run Code Online (Sandbox Code Playgroud)
self.speedx如果既没有按下LEFT也没有按下 ,则您必须重置速度 ( ) RIGHT:
class Paddle(pygame.sprite.Sprite):
# [...]
def update(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.speedx = -5
if keys[pygame.K_RIGHT]:
self.speedx = 5
if not keys[pygame.K_LEFT] and not keys[pygame.K_RIGHT]:
self.speedx = 0
self.rect.x+=self.speedx
Run Code Online (Sandbox Code Playgroud)
因为在每次更新调用时,位置仍然会更新,并且由于速度不会重置,因此它会继续沿之前设置的方向移动。
或者,可以在 开始时将速度设置为 0 update:
class Paddle(pygame.sprite.Sprite):
# [...]
def update(self):
self.speedx = 0
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.speedx = -5
if keys[pygame.K_RIGHT]:
self.speedx = 5
self.rect.x+=self.speedx
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38 次 |
| 最近记录: |