我正在尝试创建一个子弹类,一旦它检测到它与某个东西发生碰撞就会删除它。我正在尝试做类似的事情:
void bullet::DoCollision()
{
if(collidesWithItem(enemy))
{
QList<enemy> collisions = collidingItems(enemy);
}
//sudo code
//foreach collision
//delete enemy
}
//delete myself
我是以正确的方式来做这件事的吗?它们都是QGraphicsItems
。
答案 0 :(得分:2)
您可以使用QGraphicsItem::collidingItems
返回与此项目冲突的所有项目的列表。获取列表后,您可以检测碰撞项是否为敌人类型,如果是,则将其删除:
QList<QGraphicsItem *> list = collidingItems() ;
foreach(QGraphicsItem * i , list)
{
enemy * item= dynamic_cast<enemy *>(i);
if (item)
{
myScene->removeItem(item);
}
}