Meilleure implémentation pour la rotation visuelle des balles
This commit is contained in:
parent
a40d724506
commit
5df9190c0a
|
@ -62,26 +62,26 @@ public:
|
||||||
* Met à jour la vitesse de l'objet selon les
|
* Met à jour la vitesse de l'objet selon les
|
||||||
* forces qui lui sont appliquées
|
* forces qui lui sont appliquées
|
||||||
*/
|
*/
|
||||||
void updateVelocity(const Manager& manager, const std::vector<ObjectPtr>& objects, float delta);
|
virtual void updateVelocity(const Manager& manager, const std::vector<ObjectPtr>& objects, float delta);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Met à jour la position de l'objet selon sa
|
* Met à jour la position de l'objet selon sa
|
||||||
* vitesse actuelle
|
* vitesse actuelle
|
||||||
*/
|
*/
|
||||||
void updatePosition(float delta);
|
virtual void updatePosition(float delta);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Détecte s'il y a collision entre cet objet
|
* Détecte s'il y a collision entre cet objet
|
||||||
* et l'objet passé en paramètre
|
* et l'objet passé en paramètre
|
||||||
*/
|
*/
|
||||||
bool detectCollision(const Object& obj, CollisionData& data) const;
|
virtual bool detectCollision(const Object& obj, CollisionData& data) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Résolution de la collision entre cet objet
|
* Résolution de la collision entre cet objet
|
||||||
* et l'objet passé en paramètre selon la normale
|
* et l'objet passé en paramètre selon la normale
|
||||||
* donnée
|
* donnée
|
||||||
*/
|
*/
|
||||||
void solveCollision(Object& obj, const sf::Vector2f& normal);
|
virtual void solveCollision(Object& obj, const sf::Vector2f& normal);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Application de la correction positionnelle sur
|
* Application de la correction positionnelle sur
|
||||||
|
@ -91,7 +91,7 @@ public:
|
||||||
* les objets peuvent accumuler une erreur de positionnement
|
* les objets peuvent accumuler une erreur de positionnement
|
||||||
* qui les fait "plonger" les uns dans les autres
|
* qui les fait "plonger" les uns dans les autres
|
||||||
*/
|
*/
|
||||||
void positionalCorrection(Object& obj, const sf::Vector2f& normal, float depth);
|
virtual void positionalCorrection(Object& obj, const sf::Vector2f& normal, float depth);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Récupère la boîte englobante de l'objet
|
* Récupère la boîte englobante de l'objet
|
||||||
|
|
|
@ -34,6 +34,12 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void draw(Manager& manager);
|
virtual void draw(Manager& manager);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Met à jour la position de l'objet selon sa
|
||||||
|
* vitesse actuelle
|
||||||
|
*/
|
||||||
|
virtual void updatePosition(float delta);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Récupère la boîte englobante de l'objet
|
* Récupère la boîte englobante de l'objet
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -65,11 +65,18 @@ void Player::draw(Manager& manager) {
|
||||||
);
|
);
|
||||||
|
|
||||||
// déplacement du sprite à la position de la balle
|
// déplacement du sprite à la position de la balle
|
||||||
sprite.rotate(getVelocity().x * Constants::PHYSICS_TIME.asSeconds() * .5f);
|
|
||||||
sprite.setPosition(getPosition());
|
sprite.setPosition(getPosition());
|
||||||
manager.getWindow().draw(sprite);
|
manager.getWindow().draw(sprite);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Player::updatePosition(float delta) {
|
||||||
|
// calcul de la différence de position pour connaître
|
||||||
|
// (approximativement) la rotation de la balle
|
||||||
|
sf::Vector2f last_position = getPosition();
|
||||||
|
Object::updatePosition(delta);
|
||||||
|
sprite.rotate((getPosition() - last_position).x * 3.f);
|
||||||
|
}
|
||||||
|
|
||||||
std::unique_ptr<sf::FloatRect> Player::getAABB() const {
|
std::unique_ptr<sf::FloatRect> Player::getAABB() const {
|
||||||
return std::unique_ptr<sf::FloatRect>(new sf::FloatRect(
|
return std::unique_ptr<sf::FloatRect>(new sf::FloatRect(
|
||||||
getPosition().x - getRadius(),
|
getPosition().x - getRadius(),
|
||||||
|
|
Loading…
Reference in New Issue