Pygame三角碰撞检测
问题描述:
我正试图在Pygame中为我的游戏做一个三角碰撞检测。 我成功地通过Pygame三角碰撞检测
rect.collidelist(rectlist)
她对我的所有矩形的碰撞检测但现在,我已经实现了Poligons(或三角形更精确),我不能做任何良好的碰撞。三角形的碰撞是正方形的,所以我现在不知道该怎么办..
答
通常,2D碰撞在大多数游戏开发框架中都以正方形的形式实现。他们被称为“碰撞箱”或“撞击箱”。你可以安装一个pygame的扩展名,如Pylygon处理多边形的碰撞,或者有一个更简单的解决方案:
使用您的三角形物体上多次碰撞盒,几个小方块可以相当严密映射碰撞检测的实际视觉的个人资料。当然,这不会是“像素完美”,但它通常工作得很好,当然,如果你需要非常准确的碰撞,这种方式不适合它。
这里的图片说明我所说的意思:
+0
非常感谢! –
+0
没问题,我记得我有一个类似的问题,使我的第一场比赛 – x2kpb
你从正交的平凡世界搬到了多边形交集的更复杂的世界。世界的粒度是否足够,你可以保证第一次接触会在顶点?这是一个更容易解决的问题,注意给定的点是否在给定的三角形内。如果在检查之前顶点可能穿过一个三角形并移出另一边(暗示),这将不起作用。 – Prune
如果你不得不去完全重叠检测,你可以看看Luke Simonson对C++ BOOST库的补充。它适用于广义多边形,包括交叉和凹陷,并且它*快*。 – Prune