Ich versuche, meinen Charakter auf einer Plattform in meinem eigenen SDL2-basierten Framework landen zu lassen. Zur Zeit funktioniert es nicht, wenn ich mehr als eine Plattform habe, was standardmäßig ist, wenn ich eine spawne. Der Charakter bleibt nur auf der letzten hinzugefügten Plattform. der Rest wird langsam durchfallen, während der grounded
boolesche Schalter von true
zu false
wechselt.Wie stelle ich sicher, dass ein boolscher Wert wahr bleibt, während ich auf Kollision überprüfe
hier ist mein Code:
void NHTVScene::EntitiesGrounded()
{
std::vector<Entity*>::iterator it = platformVector.begin();
while (it != platformVector.end()) {
if (player->isColliding((*it))) {
player->velocity = Vector2(0, 0);
player->grounded = true;
}
else if (!player->isColliding((*it))) {
player->grounded = false;
}
it++;
}
}
diese Funktion jedes Update DELTA aufgerufen wird.
ich weiß, dass dieser Code es so macht, dass mit jeder Plattform, die nicht kollidiert, dass der Boolesche Wert auf True festgelegt wird, aber ich finde es komisch, dass es das nicht auf dem neuesten Eintrag tut, und ich habe keine Tipp, wie man das richtig macht.
Ich hoffe, dies ist genug Informationen, um ein wenig Einblick in mein Problem zu geben. Wenn nicht, lass es mich wissen und ich werde mehr liefern.
Sie möchten wahrscheinlich aus der Schleife "brechen", sobald Sie feststellen, dass der Charakter tatsächlich geerdet ist. –
das hat funktioniert. Danke vielmals. damit habe ich mich lange gestritten. Eines dieser Dinge, wo ich es zu lange anstarrte –