[PyQt] PyQt4 does not recognize the *shape* of QGraphicsItems for collision detection
Philippe Crave
philippe.crave at gmail.com
Sat Aug 14 21:34:40 BST 2010
not sure, but maybe you should set this flag: ItemClipsToShape
http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qgraphicsitem.html#GraphicsItemFlag-enum
2010/8/14 Konrad Koller <koko9991 at googlemail.com>
>
> In many games collision detection is important. In my case the game's stones are mostly convex polygons.
> Therefore their bounding rectangle is not adequate for collision detection and therefore I create them
> in the constructor of the class Stone(QGraphicsItem) as QPainterPaths like so:
>
> self.path=QPainterPath()
> self.path.addPolygon(polygon)
> self.path.closeSubpath()
>
> Then their shape is simple:
>
> def shape(self): return self.path
>
> Their boundingRect (used elsewhere) is:
>
> def boundingRect(self): return self.path.boundingRect()
>
> For collision detection with already placed stones I write:
>
> for item in self.collidingItems(Qt.IntersectsItemShape):
> if isinstance(item,Stone): print "Collision!"
>
> To my surprise the detection does not recognize the shape but obviously the boundingRect.
> For example:
> _________
> |______ |
> ___ | |___
> | | |_____|
> | |
> | |_
> |____|
>
> This reports a "collision". Why?
>
> Thanks for any hint. Konrad
>
>
> _______________________________________________
> PyQt mailing list PyQt at riverbankcomputing.com
> http://www.riverbankcomputing.com/mailman/listinfo/pyqt
More information about the PyQt
mailing list