Pygame - 检测碰撞方向

时间:2017-05-22 18:25:12

标签: python pygame

所以我开始了一些有点大的pygame项目,一切都或多或少好了。

但现在我真正坚持如何检测碰撞的方向。

所以我得到了我的角色(2d sidescroller),还有一个精灵组用于障碍物,现在所有这些障碍都是。然而现在碰撞检测工作正常,但是,如果是这样的话,有可能检测到障碍物的哪一侧反映了字符矩形与它发生碰撞?

1 个答案:

答案 0 :(得分:0)

有许多2D物理库包括碰撞检测,通常像你所说的大型项目需要其他物理特性,如约束,光线投射和物体。一个很棒的python库是pyBox2D,并且在github上有很好的文档。 pyBox2D也将为您完全处理碰撞,但您也可以设置自定义碰撞处理程序 对于你的问题,你问如何检查矩形碰撞的位置,你可以使用像这样给出的pygame.Rect变量来做到这一点

import pygame


def determineSide(rect1, rect2):
    if rect1.midtop[1] > rect2.midtop[1]:
        return "top"
    elif rect1.midleft[0] > rect2.midleft[0]:
        return "left"
    elif rect1.midright[0] < rect2.midright[0]:
        return "right"
    else:
        return "bottom"

rect1 = pygame.Rect(100, 100, 20, 20)
rect2 = pygame.Rect(100, 90, 20, 20)
print(determineSide(rect1, rect2))  

注意这不会检查碰撞,只是检查rect2相对于rect1的位置。