小编Tom*_*hor的帖子

Qt - 用于碰撞检测的圆圈

我一直在用Qt中的圆圈进行物理模拟.到目前为止,我发现定义圆的最简单方法是制作一个QRect对象,然后用该矩形绘制椭圆作为"蓝图".现在我遇到的问题是它画了一个圆圈,但是命中检测的命中框仍然是一个正方形,看起来很尴尬.到目前为止,我还没能找到解决方案,希望能在这里找到一些帮助.

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);
}
Run Code Online (Sandbox Code Playgroud)

c++ qt collision-detection qpainter

3
推荐指数
1
解决办法
1922
查看次数

标签 统计

c++ ×1

collision-detection ×1

qpainter ×1

qt ×1