Symulacja gry – znikające części grafiki

0

Witam,
Robie symulację gry, i dodaje różne obiekty. Problemem jest grafika, gdy dwa obiekty się pokryją.

Sytuacja wygląda tak:

  1. Mam ogólnie tło. Mam obiekt czołg(czarny poruszający się prostokąt) oraz obiekt woda( duży niebieski prostokąt). Gdy najedzie na niego czołg, to znikają fragmenty wody. i odsłania się tło. Dlaczego tak się dzieje i jak to rozwiązać?

Myślę, że jest to związane z tym, że qt nie wie, który obiekt powinien być na górze, zapomina, że pod czołgiem jest woda i wraca do tła. Może jest jakaś funkcja do odświeżania?

0

Kawałek kodu mógłby pomóc znaleźć przyczynę.
Podejrzewam, że blending może być źle ustawiony. Zobacz tabelkę: https://i.stack.imgur.com/22m2l.jpg
Tło może być rysowane w inny sposób albo jest czarne, dlatego kanał alpha czołgu sprawia, że tylko woda pod spodem staje się przezroczysta/czarna.

0

Hmm... jestem początkujący, więc grafika taka głupkowata jest. Najprostsza
Tło dodaje tak:

QGraphicsView *view = new QGraphicsView(scena);
view->setBackgroundBrush(QPixmap(":/new/prefix1/images/tlo.jpg"));

A czołg zrobiłem wzorując się na Colliding Mice Example

QRectF CQTank::boundingRect() const
{
    qreal adjust = 0.5;
    return QRectF(-18 - adjust, -22 - adjust,
                  36 + adjust, 60 + adjust);
}


QPainterPath CQTank::shape() const
{
    QPainterPath path;
    path.addRect(-10, -20, 20, 40);
    return path;
}


void CQTank::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
     painter->setBrush(Qt::yellow);
    painter->drawEllipse(-10, -10, 20, 20);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1