Python 有没有办法得到碰撞点的坐标?

Python 有没有办法得到碰撞点的坐标?,python,pygame,Python,Pygame,我正在做一个游戏,其中一个球的速度变化取决于它与一个物体碰撞的点。我查阅了文件,但找不到可以做这项工作的东西 有没有办法在Pygame中获得碰撞点的坐标?是的,计算出球和物体的x坐标和y坐标的差值。然后使用pygame中的mask.overlap返回碰撞点的元组。例如: def collide(obj1, obj2): offset_x = obj2.x - obj1.x offset_y = obj2.y - obj1.y return obj1.mask.overla

我正在做一个游戏,其中一个球的速度变化取决于它与一个物体碰撞的点。我查阅了文件,但找不到可以做这项工作的东西


有没有办法在Pygame中获得碰撞点的坐标?

是的,计算出球和物体的x坐标和y坐标的差值。然后使用pygame中的mask.overlap返回碰撞点的元组。例如:

def collide(obj1, obj2):
    offset_x = obj2.x - obj1.x
    offset_y = obj2.y - obj1.y
    return obj1.mask.overlap(obj2.mask, (offset_x, offset_y))

你可以找到“mask.overlap()”的文档。

我支持Abishake Srithar给出的答案。这并不是要取代这个答案,只是在其中添加信息

关于此
mask.overlap()
调用的结果,请稍加注意。它不会告诉你接触点的中心位置

正如您在文档中的描述中所看到的,通过在从左到右移动的列中从上到下搜索重叠。这意味着
overlap()
返回重叠的最左边、最上面(某种程度上)的点

因此,如果对象的更新/移动导致对象在某个区域上重叠(这很可能),则
overlap()
返回的点是该重叠的最左边、最上面的点。它不是该区域的中心,也不是两个对象如果不重叠可能第一次接触的点

例如,如果这是两个球体碰撞,它将为您提供重叠的边缘,而不是碰撞的实际中心点。这可能会改变你的反射角度

这种差异会影响碰撞物理

这对大多数比赛来说已经足够好了,但我认为值得指出