如何在 Pygame 中为单个密钥提供不同的 KMOD 状态?



到目前为止我得到的是:

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_SHIFT或KMDO_CTRL),而不是选择性地。因此,无论我按下哪个修改器(shift、alt、ctrl等),效果都是一样的。

我想要的效果是,屏幕上的角色可以分别爬行、奔跑或行走。

提前谢谢。

您使用的是逻辑and运算符,而您确实需要运算符&。代替

if mods and KMOD_SHIFT:

你想要

if mods & KMOD_SHIFT:

只要第一个操作数为真值(在这种情况下,不等于0),逻辑and就会返回第二个操作数的值。&运算符将执行逐位AND运算,因此只有当来自KMOD常数的一些位在mods变量中为on时,才会返回非零值(逻辑解释为true)。

相关内容

  • 没有找到相关文章

最新更新