我正在尝试为我制作的游戏制作一个碰撞检测系统。这段代码在我检测物体较小时的碰撞时效果很好,但现在,一旦我制作了一个直径可达1000像素的月球遮罩,它就开始滞后于我的计算机。IVE试图绘制一个月球轮廓的第二图像,用于检测碰撞,但在进一步测试时,它仍然会检测到轮廓的中间(在图像的透明部分)中的碰撞,并且没有帮助滞后。我还试图使轮廓图像的像素减少,但保持相同的大小。这些图像在屏幕上向下移动,就像一艘船在屏幕上移动以躲避它们一样。我需要像素完美的碰撞 如果有人能告诉我如何减少延迟,或者用其他方法检测我的飞船是否在圆圈内,那将是一个很大的帮助:)
for i in range(numMoon):
moonRect = pygame.Rect(moonX[i], moonY[i], int(100*moonScale[i]), int(100*moonScale[i]))
if moonRect.colliderect(shipRect):
moonMask = pygame.mask.from_surface(moon)
offset_x = shipRect.x - moonRect.x
offset_y = shipRect.y - moonRect.y
crash = moonMask.overlap(shipMask, (offset_x, offset_y))
if crash:
print('moon')
从表面创建遮罩是一项昂贵的操作。不要在循环中生成^{} 。加载图像后,直接在初始化期间创建遮罩:
使用预先生成的掩码
相关问题 更多 >
编程相关推荐