【问题标题】:How do I handle multiple sprites collisions when there are >10 sprites?当有> 10个精灵时,如何处理多个精灵碰撞?
【发布时间】:2012-11-29 10:33:24
【问题描述】:

我制作了一个小程序来为 astar 算法设置动画。如果你看图像,有很多黄色的汽车在四处移动。它们随时可能发生碰撞,可能只是其中一个或全部可能只是愚蠢地相互碰撞。

如何检测所有这些冲突?如何找出哪辆车撞到了另一辆车?

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

【问题讨论】:

    标签: python sprite pygame collision


    【解决方案1】:

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

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

    如果你使用这种方法,你只会碰撞成对的汽车,并且不会碰撞汽车。

    【讨论】:

      【解决方案2】:

      如果您有汽车类,并且汽车列表中的所有实例:

      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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-29
      • 2017-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多