EasingCurve pour simuler une gravité ?
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:
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:
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:
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