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
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
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
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 #include "ballon.h" #include <QPropertyAnimation> Ballon::Ballon() : QGraphicsPixmapItem() { setPixmap(QPixmap(":/new/prefix1/ballon.png")); this->setPos(300,0); }
Et mon projet sur Git https://github.com/PierreZ/Jeux-de-Jongles
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();
Je dis merci d'avance à toute les personnes qui voudront bien m'aider !
Pierre
Partager