我的问题是如何在我的游戏中继续发射子弹。我可以发射1个子弹,然后我收到消息QGraphicsScene :: addItem:item已经被添加到这个场景中。我已经阅读了一些关于类似主题的帖子,但是解释并没有解决我的问题。这是我的代码片段。我知道该项目已经添加,但是如何解决这个问题并继续射击子弹?任何帮助或示例代码将不胜感激。
void LevelOne::keyPressEvent(QKeyEvent *event) {
if (event->isAutoRepeat())
return;
switch (event->key()) {
case Qt::Key_F:
addItem(bullet); // Add the bullet
break;
case Qt::Key_Space:
break;
default:
break;
}
}
void LevelOne::initPlayField() {
bullet = new Bullet() ;
bullet->setPos(m_player->pos().x(), m_player->pos().y()
}
答案 0 :(得分:1)
我的理解是,当你按下F键时,你想要投射子弹,每个子弹都是新的,所以你必须每次都创建该对象。
void LevelOne::keyPressEvent(QKeyEvent *event) {
if (event->isAutoRepeat())
return;
switch (event->key()) {
case Qt::Key_F:
Bullet *obj = new Bullet();
obj->setPos(m_player->pos().x(), m_player->pos().y()
addItem(obj); // Add the bullet
break;
case Qt::Key_Space:
break;
default:
break;
}
}