我是Python的新手,但我决定尝试使用Pygame制作格斗游戏。 我的角色只会在强制更新的情况下向左移动。
我尝试过:
按下键
if event.key == pygame.K_d:
向上键
if event.key == pygame.K_d or event.key == pygame.K_a:
x_change = 0
它在一定程度上起作用。当您需要突然改变方向但无法改变方向时,这很烦人。
我还用AND更改了OR,因此当两个都抬起时它将停止,但这会阻止两个方向的移动。
做到这一点,这样我就可以在不因测试原因而战斗的情况下移动
fighting = False
while not fighting:
for event in pygame.event.get():
if event.type == pygame.QUIT:
fighting - False
keys = pygame.key.get_pressed()
if keys[pygame.K_a]:
x_change1 = -5
if keys[pygame.K_d]:
x_change1 = 5
if not keys[pygame.K_a] and keys[pygame.K_d]:
x_change1 = 0
x1 += x_change1
gameDisplay.fill(white)
fighter1(x1,y1)
pygame.display.update()
clock.tick(28)
仅当我强制进行更新(例如再次按A(向左)提起A或将鼠标移到窗口上)时,我的家伙才向左移动X像素。 D(右)注册但不动。按下A后,即使按键向上也不会停止。
我想解决此问题,以便随后可以轻松添加跳跃,攻击和玩家2。
答案 0 :(得分:1)
您在这里缺少not操作符:
if not keys[pygame.K_a] and keys[pygame.K_d]:
x_change1 = 0
像这样添加它:
if not keys[pygame.K_a] and not keys[pygame.K_d]:
x_change1 = 0