我正在开发一款小型塔防游戏,以便学习Qt。我正在使用QGraphicsScene来保存游戏的所有对象。为了让它们移动,我没有使用动画框架,但我正在调用advance()方法和QTimer。
当他们击中敌人时,我想让我的射弹爆炸。问题是,当我试图绘制椭圆来模拟爆炸时,它无法正确绘制。
您可以在this video中看到问题。
我尝试使用z-index但它没有改变任何东西。
这是我用来绘制射弹的代码:
void Projectile::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
if(!isExploding) {
painter->drawPixmap(boundingRect().toRect(), image);
} else {
if(cnt < 50) {
painter->setBrush(QBrush(explosion));
painter->drawEllipse(-cnt, -cnt, 2.0*cnt, 2.0*cnt);
cnt++;
} else {
this->isFinished = 1;
}
}
}
QRectF Projectile::boundingRect() const
{
// Taille de l'image de l'insecte
return QRectF(0, 0, 6, 6);
}
你有解决这个问题的线索吗?
谢谢。
答案 0 :(得分:1)
说cnt是3。 您正在使用
绘制椭圆painter->drawEllipse(-3,-3,6,6)
这将需要一个至少宽度和高度为9的boundingRect 此外,使用内部项目坐标系指定boundingRect。您正在从(-3,-3)到(6,6)绘制,它位于boundingRect之外。