Pygame三角碰撞检测

问题描述:

我正试图在Pygame中为我的游戏做一个三角碰撞检测。 我成功地通过Pygame三角碰撞检测

rect.collidelist(rectlist) 

她对我的所有矩形的碰撞检测但现在,我已经实现了Poligons(或三角形更精确),我不能做任何良好的碰撞。三角形的碰撞是正方形的,所以我现在不知道该怎么办..

+0

你从正交的平凡世界搬到了多边形交集的更复杂的世界。世界的粒度是否足够,你可以保证第一次接触会在顶点?这是一个更容易解决的问题,注意给定的点是否在给定的三角形内。如果在检查之前顶点可能穿过一个三角形并移出另一边(暗示),这将不起作用。 – Prune

+0

如果你不得不去完全重叠检测,你可以看看Luke Simonson对C++ BOOST库的补充。它适用于广义多边形,包括交叉和凹陷,并且它*快*。 – Prune

通常,2D碰撞在大多数游戏开发框架中都以正方形的形式实现。他们被称为“碰撞箱”或“撞击箱”。你可以安装一个pygame的扩展名,如Pylygon处理多边形的碰撞,或者有一个更简单的解决方案:

使用您的三角形物体上多次碰撞盒,几个小方块可以相当严密映射碰撞检测的实际视觉的个人资料。当然,这不会是“像素完美”,但它通常工作得很好,当然,如果你需要非常准确的碰撞,这种方式不适合它。

这里的图片说明我所说的意思:

Triangle (Black) Collision boxes (red)

+0

非常感谢! –

+0

没问题,我记得我有一个类似的问题,使我的第一场比赛 – x2kpb