所以我开始了一些有点大的pygame项目,一切都或多或少好了。
但现在我真正坚持如何检测碰撞的方向。
所以我得到了我的角色(2d sidescroller),还有一个精灵组用于障碍物,现在所有这些障碍都是。然而现在碰撞检测工作正常,但是,如果是这样的话,有可能检测到障碍物的哪一侧反映了字符矩形与它发生碰撞?
答案 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的位置。