мой вопрос в том, как продолжать стрелять пулями в моей игре. Я могу выстрелить 1 пулей, а затем получаю сообщение QGraphicsScene::addItem: элемент уже добавлен в эту сцену. Я прочитал несколько сообщений на аналогичную тему, однако объяснение не решило мою проблему. Вот мои фрагменты кода. Я понимаю, что предмет уже добавлен, но как это обойти и продолжать стрелять пулями? Будем очень признательны за любую помощь или пример кода.
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()
}
Bullet bullets[MAX_BULLETS];
, вероятно, будет работать с некоторымиstd::bitset<MAX_BULLETS> firedBullets;
), а затем повторно использовать запасные из массива. для стрельбы. Приведенный ниже ответ требует, чтобы вы удалили пулю после того, как это будет сделано со всеми, что окажет некоторое давление на управление динамической памятью (много небольших фрагментов памяти размером с пулю, которые часто выделяются и освобождаются). Это не проблема с простой игрой, но в играх ААА это было бы проблемой. - person Ped7g   schedule 08.08.2017