In many games collision detection is important. In my case the game's stones are mostly convex polygons. <br>Therefore their bounding rectangle is not adequate for collision detection and therefore I create them <br>in the constructor of the class Stone(QGraphicsItem) as QPainterPaths like so:<br>
<br>self.path=QPainterPath()<br>self.path.addPolygon(polygon)<br>self.path.closeSubpath()<br><br>Then their shape is simple:<br><br>def shape(self): return self.path<br><br>Their boundingRect (used elsewhere) is:<br><br>def boundingRect(self): return self.path.boundingRect()<br>
<br>For collision detection with already placed stones I write:<br><br>for item in self.collidingItems(Qt.IntersectsItemShape):<br>    if isinstance(item,Stone): print "Collision!"<br><br>To my surprise the detection does not recognize the shape but obviously the boundingRect.<br>
For example:<br>_________<br>|______    |        <br>  ___    |   |___<br> |     |    |_____|<br> |     |<br> |     |_ <br> |____|<br>  <br>This reports a "collision". Why? <br><br> Thanks for any hint. Konrad<br>
<br>