使用自定义QGraphicsItem类进行QT冲突检测

时间:2014-05-08 05:49:18

标签: c++ qt qgraphicsitem qdialog

我正在尝试创建一个子弹类,一旦它检测到它与某个东西发生碰撞就会删除它。我正在尝试做类似的事情:

void bullet::DoCollision()
{
    if(collidesWithItem(enemy))
    {
        QList<enemy> collisions = collidingItems(enemy);
    }
    //sudo code
    //foreach collision
    //delete enemy
}
//delete myself

我是以正确的方式来做这件事的吗?它们都是QGraphicsItems

1 个答案:

答案 0 :(得分:2)

您可以使用QGraphicsItem::collidingItems返回与此项目冲突的所有项目的列表。获取列表后,您可以检测碰撞项是否为敌人类型,如果是,则将其删除:

QList<QGraphicsItem *> list = collidingItems() ;

foreach(QGraphicsItem * i , list)
{
    enemy * item= dynamic_cast<enemy *>(i);
    if (item)
    {
        myScene->removeItem(item);
    }
}