Python 当存在>;时,如何处理多个精灵碰撞;10个雪碧?
我正在制作一个小程序来制作astar算法的动画。如果你看这张图片,有很多黄色的汽车在四处行驶。它们可以在任何时刻碰撞,可能只是其中一个或全部,可能只是愚蠢地相互碰撞 如何检测所有这些碰撞?我如何找出哪辆车与另一辆车相撞 我想处理每次碰撞的方法是要么让他们撞车,要么让一辆车停下来,让另一辆车计算一条绕着停下来的车的路线Python 当存在>;时,如何处理多个精灵碰撞;10个雪碧?,python,sprite,pygame,collision,Python,Sprite,Pygame,Collision,我正在制作一个小程序来制作astar算法的动画。如果你看这张图片,有很多黄色的汽车在四处行驶。它们可以在任何时刻碰撞,可能只是其中一个或全部,可能只是愚蠢地相互碰撞 如何检测所有这些碰撞?我如何找出哪辆车与另一辆车相撞 我想处理每次碰撞的方法是要么让他们撞车,要么让一辆车停下来,让另一辆车计算一条绕着停下来的车的路线 如果您有car类以及cars列表中的所有实例: for c1 in cars: collides_environment(c1) for c2 in cars:
如果您有car类以及cars列表中的所有实例:
for c1 in cars:
collides_environment(c1)
for c2 in cars:
collides(c1,c2)
你使用的是pygame,汽车或多或少都是方形的。对于碰撞检查,如果您有car类以及cars列表中的所有实例,则可以使用函数
collide rect
::
for c1 in cars:
collides_environment(c1)
for c2 in cars:
collides(c1,c2)
你使用的是pygame,汽车或多或少都是方形的。对于碰撞检查,您可以使用功能
collideRect
:更便宜的解决方案是使用itertools
模块仅碰撞车辆组合:
import itertools
for c1 in cars:
collides_environment(c1)
for c1, c2 in itertools.combinations(cars):
collides(c1, c2)
如果使用此方法,您将只碰撞一对汽车,而不会碰撞汽车本身。更便宜的解决方案是使用
itertools
模块仅碰撞汽车组合:
import itertools
for c1 in cars:
collides_environment(c1)
for c1, c2 in itertools.combinations(cars):
collides(c1, c2)
如果使用此方法,您将只碰撞一对汽车,而不会碰撞汽车本身。我实际上是这样做的,遍历整个列表。我希望有一个更好的方法来做这件事。最后,我计划添加200辆以上的汽车,以模拟纽约的阿斯塔。在这种情况下,您可能想查看以下讨论:中有精灵碰撞功能:。即使有200辆车,你也不必检查所有的碰撞。您可以只比较子网格中的汽车。(四叉树)。我实际上是这样做的,遍历整个列表。我希望有一个更好的方法来做这件事。最后,我计划添加200辆以上的汽车,以模拟纽约的阿斯塔。在这种情况下,您可能想查看以下讨论:中有精灵碰撞功能:。即使有200辆车,你也不必检查所有的碰撞。您可以只比较子网格中的汽车。(四叉树)。