【发布时间】:2016-08-06 08:51:39
【问题描述】:
例如,如果我按住 w 然后按住 a,pygame 有没有办法告诉我我先按住了哪个键?
我需要知道这一点,因为对于我尝试使用 pygame 制作的游戏,角色没有流畅的动作。运动示例代码如下。
我首先检测并设置方向,然后为每个方向设置 xchange 和 y 变化。
然后我将它添加到播放器的 x 和 y 上,然后 blit 到屏幕上。
问题是,如果我按住(s)然后按住右(d),我希望角色向下移动然后向右移动,但我必须释放向下按钮才能发生这种情况。这是因为在我的代码中,if keys[k_s] 位于四个方向的底部并最后评估,这会将方向值替换为向下。运动是平稳的,但是如果我按住右(d)然后再按住以改变方向,因为同样的原因。
感谢您的帮助!
keys = pygame.key.get_pressed()
if keys[K_a] or keys[K_d] or keys[K_w] or keys[K_s]:
if keys[K_d] and keys[K_a]:
direction = "none"
if keys[K_w] and keys[K_s]:
direction = "none"
else:
#if direction == "none":
if keys[K_a]:
direction = "left"
if keys[K_d]:
direction = "right"
if keys[K_w]:
direction = "up"
if keys[K_s]:
direction = "down"
else:
direction = "none"
currentarea.putbackground()
currentarea.putdoor()
if direction == "none":
ychange = 0
xchange = 0
elif direction == "up":
xchange = 0
ychange = -3
elif direction == "down":
xchange = 0
ychange = 3
elif direction == "left":
xchange = -3
ychange = 0
elif direction == "right":
xchange = 3
ychange = 0
【问题讨论】: