当有> 10个精灵时,如何处理多个精灵碰撞?

时间:2012-12-11 20:03:04

标签: python sprite pygame collision

我制作了一个小程序来为astar算法制作动画。如果你看一下图像,就会有很多黄色汽车在四处移动。那些可能在任何时刻发生碰撞,可能只是其中一个或全部可能只是愚蠢地相互撞击。

如何检测所有这些碰撞?如何找出哪辆特定车撞到了哪辆车?

我想要处理每次碰撞的方法是让它们发生碰撞,或者让一辆车停下来,让另一辆车计算出停在车辆周围的路线。

enter image description here

2 个答案:

答案 0 :(得分:3)

更便宜的解决方案是使用itertools模块仅碰撞汽车组合:

import itertools

for c1 in cars:
    collides_environment(c1)

for c1, c2 in itertools.combinations(cars):
    collides(c1, c2)

如果你使用这种方法,你只会碰撞一对汽车而不会碰到汽车。

答案 1 :(得分:1)

如果你有车级车,以及车辆清单中的所有实例:

for c1 in cars:
    collides_environment(c1)
    for c2 in cars:
        collides(c1,c2)

你正在使用pygame,而且汽车或多或少是一个正方形。对于碰撞检查,您可以使用函数collideRecthttp://www.pygame.org/docs/ref/rect.html#Rect.colliderect

相关问题