【发布时间】:2012-11-29 10:33:24
【问题描述】:
我制作了一个小程序来为 astar 算法设置动画。如果你看图像,有很多黄色的汽车在四处移动。它们随时可能发生碰撞,可能只是其中一个或全部可能只是愚蠢地相互碰撞。
如何检测所有这些冲突?如何找出哪辆车撞到了另一辆车?
我想要处理每次碰撞的方式是让它们发生碰撞,或者让一辆车停下来,让另一辆车计算出围绕停止的汽车的路线。
【问题讨论】:
标签: python sprite pygame collision
我制作了一个小程序来为 astar 算法设置动画。如果你看图像,有很多黄色的汽车在四处移动。它们随时可能发生碰撞,可能只是其中一个或全部可能只是愚蠢地相互碰撞。
如何检测所有这些冲突?如何找出哪辆车撞到了另一辆车?
我想要处理每次碰撞的方式是让它们发生碰撞,或者让一辆车停下来,让另一辆车计算出围绕停止的汽车的路线。
【问题讨论】:
标签: python sprite pygame collision
更便宜的解决方案是使用itertools 模块来仅碰撞汽车组合:
import itertools
for c1 in cars:
collides_environment(c1)
for c1, c2 in itertools.combinations(cars):
collides(c1, c2)
如果你使用这种方法,你只会碰撞成对的汽车,并且不会碰撞汽车。
【讨论】:
如果您有汽车类,并且汽车列表中的所有实例:
for c1 in cars:
collides_environment(c1)
for c2 in cars:
collides(c1,c2)
您正在使用 pygame,而汽车或多或少是一个正方形。对于碰撞检查,您可以使用函数collideRect:http://www.pygame.org/docs/ref/rect.html#Rect.colliderect
【讨论】: