Events 我如何改变KMOD状态';在Pygame中只需一个键?
以下是到目前为止我得到的信息:Events 我如何改变KMOD状态';在Pygame中只需一个键?,events,key,pygame,modifiers,Events,Key,Pygame,Modifiers,以下是到目前为止我得到的信息: for event in pygame.event.get(): if event.type == KEYDOWN: if event.key == K_LEFT: mods = pygame.key.get_mods() if mods and KMOD_SHIFT: movei = -5 if mods and KMOD_CTRL:
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_LEFT:
mods = pygame.key.get_mods()
if mods and KMOD_SHIFT:
movei = -5
if mods and KMOD_CTRL:
movei = -20
else:
movei = -10
问题是它似乎总是只拾取一个或另一个(KMOD\u SHIFT或KMDO\u CTRL),而不是选择性地拾取。因此,无论我按下哪个修改器(shift、alt、ctrl等),效果都是一样的
我想要的效果是,屏幕上的角色可以分别爬行、奔跑或行走
提前感谢。您使用的是逻辑
和
运算符,而您确实需要位运算符&
。而不是
if mods and KMOD_SHIFT:
你想要
if mods & KMOD_SHIFT:
只要第一个操作数的值为真(在本例中,不等于0),逻辑
和
将返回第二个操作数的值。&
运算符将执行逐位AND运算,因此只有在mods
变量中KMOD常量的某些位打开时,才会返回非零值(逻辑上解释为true)。您使用的是逻辑和
运算符,虽然您确实需要逐位运算符&
。而不是
if mods and KMOD_SHIFT:
你想要
if mods & KMOD_SHIFT:
只要第一个操作数的值为真(在本例中,不等于0),逻辑和
将返回第二个操作数的值。&
运算符将执行逐位AND运算,因此仅当mods
变量中KMOD常量的某些位处于开启状态时,才会返回非零值(逻辑上解释为true)