首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在游戏经过一段时间后,如何使用rect.colliderect(rect2)检查处于同一位置的两个对象?

问在游戏经过一段时间后,如何使用rect.colliderect(rect2)检查处于同一位置的两个对象?
EN

Stack Overflow用户
提问于 2013-11-09 18:27:33
回答 2查看 156关注 0票数 0

好吧,我要让狗追球,球追鼠标光标。当狗处于与球相同的位置时,游戏应该停止并打印“游戏结束”。现在,我的代码检查两个对象在游戏开始后是否处于相同的位置,所以它就结束了,因为在开始时,对象位于相同的位置。经过一段时间的比赛后,我怎样才能检查位置呢?

代码语言:javascript
复制
`
    if rect.colliderect(rect2) == True:
        clock.tick(1000)
        self.chasing = False
        rect3 = self.fontim.get_rect()
        rect3 = rect3.move((self.width-rect3.width)//2,
                          (self.height-rect3.height)//2)

    pygame.display.flip()

MyGame().run()
pygame.quit()
sys.exit()

`

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-09 19:23:42

使用pygame.time.Clock

用法:

你先创建一个时钟。然后,每帧一次,您应该调用Clock.tick(),它将返回自上次调用以来传递的毫秒数。通过这种方式,您可以增加一个milliseconds_passed变量,也可以在经过一定时间后进行检查。

我建议创建一个时钟子类,并添加一个millisenonds_passed变量,这将避免代码中的任何混乱。

编辑:

您的代码中有一些错误。

首先,Clock.tick()并不是每帧都被调用一次。当狗和球相撞时,每帧都叫它一次。最好将其移动到您的运行方法。

其次,您没有得到您的时钟的返回值。正如我所写的,它返回自上次调用以来传递的毫秒数。因此,创建一个新变量,这个变量将根据该方法返回的内容而增加。最后,您需要的是一个简单的检查,您甚至可以在相同的if语句中进行检查。如下所示:

代码语言:javascript
复制
if rect.colliderect(rect2) == True and self.time_passed/1000 > 5:
票数 1
EN

Stack Overflow用户

发布于 2013-11-09 18:33:39

制作一个在游戏开始时初始化的计时器,每当遇到碰撞时,例如检查时间是否超过2秒。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19881471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档