我希望角色只要按住按钮就可以做某事,一旦放开按钮,就可以恢复正常

Zino Wardenier

我正在创建我的第一个游戏。我正在使用Python和PyGame。到目前为止,一切进展顺利,但是我遇到了一个似乎无法解决的问题:

只要按下按钮,我就希望角色进行一定的动作。通常,当您想让角色移动时,我会

if event.type == pygame.KEYDOWN:

    if event.key == pygame.K_SPACE:

这样,角色在按空格键时会执行某些操作,但是如果您按住空格键则只会执行一次。我以为我会这样做

if event.type == pygame.KEYDOWN:

    while event.key = pygame.K_SPACE

但是,当我运行此程序并按空格键时,程序将阻塞,并且我得到“程序没有反应”的东西。

所以,最后一次。我希望角色在拥有空间时能够做些什么,而当我放手时,我希望角色回到原来的状态。例如:默认情况下,我的角色正在行走。当我拥有空间时,我希望它能在我拥有空间的时间内爬行。最后,一旦我放开空间,我希望它能恢复正常的行走。

这可能吗?

拉比德76

接收事件时,spacePressed如果SPACE按下,则设置状态(KEYDOWN如果SPACE释放并KEYUP接收到该字符,请重置状态并保留该字符的位置spacePressed在主应用程序循环中移动依赖的字符,例如:

spacePressed = False
while run:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                spacePressed = True
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_SPACE:
                spacePressed = False
                # reset character
                # [...]

    if spacePressed:
        # move character
        # [...] 

另一个选择是用于pygame.key.get_pressed()在主应用程序循环中获取按下的键,并在KEYUP收到事件时重置字符的位置

while run:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

        if event.type == pygame.KEYUP:
            if event.key == pygame.K_SPACE:
                # reset character
                # [...]

    keys = pygame.key.get_pressed() 
    if keys[pygame.K_SPACE]:
        # move character
        # [...] 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

一旦安装了Ubuntu风格(例如lubuntu),就可以更改桌面环境吗?

一旦选择了<option>标记的值,就可以抓取页面的HTML内容

该线程一旦结束就可以运行,该怎么办?

WPF Datagrid,一旦创建就可以选择还是关注行?

反应登录,一旦授权就可以移动到新视图

当我用“排毒”点击时,该按钮没有被点击。但是只要点击一下就可以点击它

编写Web组件时如何处理“一旦不再连接元素就可以调用connectedCallback”

从/ etc / fstab挂载Windows共享失败,但是一旦系统启动,挂载-a就可以了

一旦安装了v4,就可以模仿PowerShell v3吗?

如何在xml的输出中分配到分支的链接,以便一旦我在html的输出中单击它就可以打开它

只需单击一下按钮,就可以将我的 db on rails 中的内容减一

我可以编写“只要可能”就可以像c ++模板函数一样工作的Julia方法吗?

一旦将私有远程存储库克隆到本地计算机,就可以防止对其进行未经授权的使用

总是Verilog RTL文件中的模块不起作用,但是一旦包含在测试台中就可以工作

我希望有人可以指导我,这样我就可以熟练掌握 c

无需阅读就可以窥视Conn

我如何在constraintlayout创建一个容器,这样我就可以设置背景?

有没有一种方法可以运行带有Ruby绑定测试套件的Selenium Webdriver,一旦运行完成,就可以在irb中继续编写测试了吗?

在线程内调用线程会给我错误,如果我只是调用函数就可以正常工作

我应该在VS代码终端中激活venv然后安装PIP,还是只要左下角显示venv我就可以开始了?

我如何通过/复制相同的选择?这样我就可以通过单击在同一选择上运行多个宏。

只要基于前一个元素的条件为真,就可以从可迭代对象中返回元素的“Pythonic”方式

PHP&MySQL:为什么没有锁定就可以正常工作?

为什么单击事件监听器就可以正常工作

没有“需要同步”的代码就可以正常工作

为什么不吞咽在循环上创建的任务就可以正常工作

我有一个共同例程,一旦选定就可以播放。但是,如果我再次选择它,则不会发生任何事情。但是第一次确实有效

我如何只用一行就可以从键盘上获得不同的数据类型?

只要有延迟,就可以。坐标,在列表上查找最接近坐标的最快方法是什么?