Qt - círculos para detecção de colisão
Eu tenho trabalhado em uma simulação de física com círculos no Qt. Até agora, a maneira mais fácil de definir círculos que encontrei é fazer umaQRect
objeto e, em seguida, desenhe a elipse com esse retângulo como um "blueprint". Agora, acabei de ter o problema de pintar um círculo, mas a caixa de ocorrências para a detecção de ocorrências ainda é um quadrado, o que parece bastante estranho. Não consegui encontrar uma solução para isso até agora e espero encontrar alguma ajuda aqui.
QRectF Ball::boundingRect() const
{
return QRect(0,0,20,20);
}
void Ball::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
QRectF rec = boundingRect();
QBrush Brush(Qt::gray);
//basic Collision Detection
if(scene()->collidingItems(this).isEmpty())
{
//no collision
Brush.setColor(Qt::green);
}
else
{
//collision!!!!!
Brush.setColor(Qt::red);
//Set position
DoCollision();
}
//painter->fillEllipse(rec,Brush);
painter->drawEllipse(rec);
}