我正在尝试创建一个子弹类,一旦它检测到它与某些东西发生碰撞,它就会删除一个敌人类。我正在尝试做类似的事情:
void bullet::DoCollision()
{
if(collidesWithItem(enemy))
{
QList<enemy> collisions = collidingItems(enemy);
}
//sudo code
//foreach collision
//delete enemy
}
//delete myself
我是否以正确的方式解决这个问题?它们都是
QGraphicsItems
。 最佳答案
您可以使用 QGraphicsItem::collidingItems
返回与此项目发生冲突的所有项目的列表。获取列表后,您可以检测碰撞项目是否属于敌人类型,如果是,则将其删除:
QList<QGraphicsItem *> list = collidingItems() ;
foreach(QGraphicsItem * i , list)
{
enemy * item= dynamic_cast<enemy *>(i);
if (item)
{
myScene->removeItem(item);
}
}
关于c++ - 使用自定义 QGraphicsItem 类进行 QT 碰撞检测,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23533691/