如何在QT游戏中继续发射子弹

时间:2017-02-28 05:12:02

标签: c++ qt qt5

我的问题是如何在我的游戏中继续发射子弹。我可以发射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()
}

1 个答案:

答案 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;
    }
}