Bonsoir à tous !

Je suis actuellement en train de travailler sur un projet mélangeant Kinect, C++ et Qt, et je sèche un peu !
Mon objectif ? Créer un jeu de jongle. Je n'ai pas encore réalisé la partie KINECT. Je suis Qt Creator mac.

Grâce à la doc, j'ai réussi à m'en sortir malgré le fait que je débute en C++, mais actuellement je galère pour animer mon QGraphicsPixmapItem qui représente ma balle.

En effet mon idée était la suivante, je pensais utiliser le EasingCurve en mode OutBounce pour simuler la chute de ma balle et utiliser la méthode renvoyant un booléen pour relancer une autre trajectoire lorsque la balle touche mon autre PixmapItem qui représente une tête et ainsi de suite.

J'ai réussi à implémenter le OutBounce mais il ne répond pas vraiment à mon attente, le rebond est fait en fonction d'un QPointF représentant la position finale de ma balle, et pas les bords de mon QGraphicsScene, comme je l'aurais voulu.

J'aimerais savoir si je m'embête pour rien, ou si justement je dois creuser dans la voie du OutBounce. J'ai pensé à dissocier un déplacement en x et un autre en y avec 2 trajectoires différentes mais je ne suis sûr de rien.

Un avis sur la question ?

Voici mon code:

Ballon.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#ifndef BALLON_H
#define BALLON_H
 
 
#include <QLabel>
#include <QGraphicsPixmapItem>
#include <QPropertyAnimation>
 
class Ballon:public QObject,public  QGraphicsPixmapItem //double héritages
{
Q_OBJECT
Q_PROPERTY(QPointF pos READ pos WRITE setPos)
 
 
public:
    Ballon(); //constructeur
 
 
 
private:
 
    QPropertyAnimation animation;
};
 
#endif // BALLON_H
Mon ballon.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
#include "ballon.h"
 
 
#include <QPropertyAnimation>
 
Ballon::Ballon() : QGraphicsPixmapItem()
{
    setPixmap(QPixmap(":/new/prefix1/ballon.png"));
 
 
this->setPos(300,0);
}
et enfin mon main.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <QApplication>
#include <Tete.h>
#include <ballon.h>
#include <QtGui>
#include <fenetre.h>
#include <QPropertyAnimation>
 
 
 
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);// démarrage de l'application Qt
 
 
    Fenetre fond(0,0,800,600);//création de la scène, objet de type Graphicscene
    Tete tete; //création de la tête
Ballon ballon; //Création du ballon
 
fond.addItem(&tete);
fond.addItem(&ballon);
 
QPointF destination;
destination.setX(500);
destination.setY(520);
 
 
 
QPropertyAnimation *animation = new QPropertyAnimation(&ballon,"pos");
animation->setEasingCurve(QEasingCurve::OutBounce);
animation->setDuration(4000);
animation->setEndValue(destination);
 
animation->start();
 
 
    QGraphicsView view(&fond); // création de la visualisation de la scène
    view.show(); //affichage de la visualisation de la scène
 
 
    return app.exec();
Et mon projet sur Git https://github.com/PierreZ/Jeux-de-Jongles

Je dis merci d'avance à toute les personnes qui voudront bien m'aider !
Pierre