我正在嘗試在 pygame 中為我的播放器制作一種跳躍方法。它上升,但我可以按住空格鍵,只要我想它就會上升,但我不知道如何阻止它。這是我的播放器類的代碼:
import pygame
class Player(pygame.sprite.Sprite):
def __init__(self, pos):
super().__init__()
self.image = pygame.Surface((32, 64))
self.image.fill('blue')
self.rect = self.image.get_rect(topleft = pos)
self.direction = pygame.math.Vector2(0, 0)
self.speed = 8
self.jump_speed = -16
self.gravity = 0.8
def get_input(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_RIGHT] or keys[pygame.K_d]:
self.direction.x = 1
elif keys[pygame.K_LEFT] or keys[pygame.K_a]:
self.direction.x = -1
else:
self.direction.x = 0
if keys[pygame.K_SPACE] or keys[pygame.K_w] or keys[pygame.K_UP]:
self.jump()
def apply_gravity(self):
self.direction.y = self.gravity
self.rect.y = self.direction.y
def jump(self):
self.direction.y = self.jump_speed
def update(self):
self.get_input()
uj5u.com熱心網友回復:
該jump事件改變了玩家移動的方式。當一個鍵被釋放時,該速度不會恢復。使用 pygame keydown 事件,然后使用 keyup 事件。
import pygame
from pygame.locals import *
#Your code
while True:
#Your event loop code
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_SPACE:
player.jump()
if event.type == KEYUP:
if event.key == K_SPACE:
player.revert_jump()
if event.type == QUIT:
pygame.quit()
exit()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/403758.html
標籤:
上一篇:從Pandas中分塊的csv檔案中保存多個csv檔案
下一篇:如何裁剪影像中紅點周圍的固定補丁
