Graphics View Framework を使用して、Qt で RPG ゲームに取り組んでいます。QGraphicsItem を継承するクラス「Player」を作成しました。今、私は「攻撃」アニメーションを作ろうとしているので、スペースキーを押すたびに、キャラクターの前にアニメーションが表示されます. 「advance()」関数を使用して、動くアニメーションを既に実装しています。
したがって、スペースを押すたびに、「is_attacking」変数が true になります。プログラムは 85 ミリ秒ごとに「is_attacking」が true かどうかをチェックし、true の場合はアニメーションを進め (次のフレームを描画)、更新します。すべてのフレームが使用されると、「is_attacking」が false になります。
問題は、「Player」クラスを使用してアニメーションを描画できないことです。QGraphicsItem は独立しており、独自の座標系を持っています。攻撃システムはすでに完成していますが、シーンにアニメーションを描画できません。
void Player::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget){
painter->drawPixmap(QRect(0, 0, 32, 32), *pixmap, QRect(position.x(), position.y(), 32, 32));
if(its_attacking()){
switch(pos){
case NORTH: // draw animation frame to x, y - 32
break;
case SOUTH: // draw animation frame to x, y + 32
break;
case WEST: // draw animation frame to x - 32, y
break;
case EAST: // draw animation frame to x + 32, y
}
}
}
QGraphicsItem の「paint()」を使用して、アイテムが属する QGraphicsScene に描画するにはどうすればよいですか?