0

我对 Pygame 比较陌生,并试图制作一个自上而下的赛车游戏。目前一切都已准备就绪,可以开始使用了!但是,我无法在“关卡”的墙壁和背景之间进行正确的碰撞检测。

我想要发生的是汽车不能离开赛道的边界,它被推回赛道并且速度降低。以前这是用 pygame.sprite.collide_rect 尝试的,但没有成功。

这是游戏中第一条赛道和游戏中一辆汽车的截图。稍后将添加背景。

轨道截图

任何关于使用哪些功能的建议将不胜感激!甚至可以像在菜单中那样使用 .collidepoint 吗?

谢谢,亚当。

4

1 回答 1

1

你可以做的是,检查两个图像是否重叠,但有一个条件:轨道的图像必须是完全不透明的,其他一切都是透明的。然后使用此代码检查是否重叠。

Car_mask = pygame.mask.from_surface(CarImage)
Track_mask = pygame.mask.from_surface(TrackImage)

offset_x, offset_y = (Car.x - Track.y), (Car.y - Track.y)
if (Track_mask.overlap(Car_mask, (offset_x,offset_y)) != None):
    print("overlaps")
else:
    #Push Car Back On Track, Slow Speed Stuff
    #Cause it not touching track at all.
于 2016-01-25T08:13:22.997 回答