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
|
||||
* 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
|
||||
* vitesse actuelle
|
||||
*/
|
||||
void updatePosition(float delta);
|
||||
virtual void updatePosition(float delta);
|
||||
|
||||
/**
|
||||
* Détecte s'il y a collision entre cet objet
|
||||
* 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
|
||||
* et l'objet passé en paramètre selon la normale
|
||||
* 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
|
||||
|
@ -91,7 +91,7 @@ public:
|
|||
* les objets peuvent accumuler une erreur de positionnement
|
||||
* 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
|
||||
|
|
|
@ -34,6 +34,12 @@ public:
|
|||
*/
|
||||
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
|
||||
*/
|
||||
|
|
|
@ -65,11 +65,18 @@ void Player::draw(Manager& manager) {
|
|||
);
|
||||
|
||||
// déplacement du sprite à la position de la balle
|
||||
sprite.rotate(getVelocity().x * Constants::PHYSICS_TIME.asSeconds() * .5f);
|
||||
sprite.setPosition(getPosition());
|
||||
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 {
|
||||
return std::unique_ptr<sf::FloatRect>(new sf::FloatRect(
|
||||
getPosition().x - getRadius(),
|
||||
|
|
Loading…
Reference in New Issue