私はsfml 2.0ライブラリを使用するスネークのoopバージョンに取り組んでおり、衝突を処理するための別のクラスがあります。コードは次のとおりです。
「collision.hpp」を含める
bool sfc::Sprite::collision(sfc::Sprite sprite2) {
this->setBounds();
sprite2.setBounds();
if (top > sprite2.bottom || bottom < sprite2.top || left > sprite2.right || right < sprite2.left) {
return false;
}
return true;
}
void sfc::Sprite::colMove(sf::Vector2f &movement, sfc::Sprite sprite2) {
if (!this->collision(sprite2)) {
this->move(movement);
}
}
void sfc::Sprite::colMove(float x, float y, sfc::Sprite sprite2) {
if (!this->collision(sprite2)) {
this->move(x, y);
}
}
void sfc::Sprite::setBounds() {
top = this->getPosition().y;
bottom = this->getPosition().y + this->getTexture()->getSize().y;
left = this->getPosition().x;
right = this->getPosition().x + this->getTexture()->getSize().y;
}
唯一の問題は、衝突イベントが発生すると、スプライトがウィンドウの残りの寿命の間動かなくなることです。その衝突でそこに固執しないようにするにはどうすればよいですか。ありがとう!〜マイケル
編集:衝突が発生した後にスプライトが移動できないことは理解していますが、衝突後にスプライトが移動するのを止める他の方法はわかりません。