ich bastel gerade an einem kleinen Spiel mit QT und habe gleich zwei Frage zu QGraphicsPixmapItem und Kollissionserkennung.
Ich habe eine Grafik für die Spielerfigur die aus optischen Gründen größer gestalltet ist. Teile dieser Grafik sollen andere überdecken ohne das dies als Kollision erkannt wird. Dazu wollte ich das BoundingRect anpassen.
Leider komm ich damit nicht zurande und ich bin mir gar nicht sicher, ob das der richtige Weg ist. In der Funktion
collidingItems() wird nach
Code: Alles auswählen
mode = Qt::IntersectsItemShape
Wie sollte ich vorgehen, wenn ich die "Hitbox" kleiner haben möchte als die "Textur"?
Dann habe ich noch das Problem, dass die zurückgegeben Liste, von Kollidierenden Objekten, aus QGraphicsItem besteht und ich so nicht auf die von mir programmierten funktionen zugreifen kann. (Meine ObjektKlasse: class Block: public QGraphicsPixmapItem)
Meine Bisherige Kollisionserkennung:
Code: Alles auswählen
QList<QGraphicsItem*> colliding_items = collidingItems();
for(int i=0, n = colliding_items.size(); i<n; i++ ){
// coliding with an block
if(typeid(*(colliding_items[i])) == typeid(Block)){
// Wie greife ich auf meine Objekte zu, kann man da was casten :?: Wol eher nicht!?
}
}
Daher meine Frage:
Ist mein bisheriger Weg zielführend oder sollte ich lieber ein eigene Kollisionserkennung basteln?
Danke für euer Feedback!
Gruß Meho