Пишу пинпонг с SFML , как правльно написать коллизию для спрайта SwagBall относительно спрайтов player

(код в методе класса SwagBall описывающий коллизию)

void SwagBall::updateWindowBoundsCollision()
{`
if(swagBallBounds.left + swagBallBounds.width >= player.sprite2.getGlobalBounds().left)
    {
        movementSpeed = -4.f;
    }`
}

Такой вариант работает не правильно, шар отталкивается даже от месть где нет спрайта игрока, спрайты игроков расположены по краям.


Ответы (1 шт):

Автор решения: Dmitriy None

Функции должна быть такой

if(this->sprite.getGlobalBounds().top + this->sprite.getGlobalBounds().height >= target->getSize().y)
{
    this->sprite.setPosition(this->sprite.getGlobalBounds().left, target->getSize().y - this->sprite.getGlobalBounds().height);
}

и вызывать в Game::update();

→ Ссылка