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    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to