python - Pygame 碰撞检测漏洞
问题描述
我正在编写我的第一款 Pygame 游戏。我正在尝试进行碰撞检测,但有时会起作用-
我尝试使用pygame.sprite.groupcollide
并且我实际使用pygame.sprite.collide_rect
这是我的碰撞代码:
for event in pygame.event.get():
collision = pygame.sprite.collide_rect(Dog, spikeUp0) or pygame.sprite.collide_rect(Dog, spikeUp1) or pygame.sprite.collide_rect(Dog, spikeDown0) or pygame.sprite.collide_rect(Dog, spikeDown1)
if collision:
Game = False
gameOver()
除了当我触摸尖峰时,我会启动该gameOver
功能,但只是有时有效。
解决方案
您必须在主循环而不是事件循环中进行碰撞测试。事件循环仅在事件发生时执行,这导致它“仅有时有效”。主循环连续执行。
例如
# main application loop
while run:
# event loop
for event in pygame.event.get():
# [...] event handling
# collison test
collision = pygame.sprite.collide_rect(Dog, spikeUp0) or pygame.sprite.collide_rect(Dog, spikeUp1) or pygame.sprite.collide_rect(Dog, spikeDown0) or pygame.sprite.collide_rect(Dog, spikeDown1)
if collision:
Game = False
gameOver()
推荐阅读
- angular - 什么是 R3InjectorError(AppModule)[Observable -> Observable -> Observable]
- node.js - 如何使用 node js mailer 制作一次性密码发送者
- python - 调用最小化窗口时出现新窗口(PyQt5)
- php - redis 不保存环境数据的原因
- python - ReadWriteMemory 将内存读取为 int 而不是 float
- java - 短信管理器不发送消息
- python - K-means 特征提取 Inception Resnet V2 (Calculate ARI)
- azure-devops - Azure DevOps API 在未验证的情况下创建服务连接,因此在使用时出现错误无法查询服务连接 api
- julia - Flux.jl 怎么样使它可以微分?
- android - Jetpack 组合底部应用栏深色