Игровая логика не работает, как и ожидалось, визуализировать взрыв [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Игровая логика не работает, как и ожидалось, визуализировать взрыв [закрыто]

Сообщение Anonymous »

Код компилирует и работает, но не так. Я создал фиктивную цель, чтобы проверить свой код на столкновение и взрывы. Это моя первая программа самостоятельно в C ++, так что имейте в виду, что код далеко не приятный. Как только энергия на 0,0 или ниже, она должна взорваться. Цель на самом деле исчезает, но я вижу первую рамку взрыва, и она остается там. Он не меняется и не исчезает.

Код: Выделить всё

        target.Update();
if (target.GetEnergy() > 0.0f) {Collisions::IsTargetHit(target);}
< /code>
Я оставлю целевое обновление, пока не покажу Istargethit < /p>
bool Collisions::IsTargetHit(Target& target) {
// get a pointer to all hero's proton-bullets
std::vector* p_bullets = HeroShoot::GetBurst();
// check collision with target for every proton-bullet
for (const auto& bullet : *p_bullets) {
if (CheckCollisionRecs(bullet->GetProtonBounds(),target.GetTargetBounds())) {
// receive damage from bullet and reduce it from target
target.TakeDamage(bullet->GetPower());
bullet->SetHit(true);
return true;
}
}
return false;

}
< /code>
Если нажмите, обновляет энергию. Если энергия изменяется до отрицательного, то она устанавливает сжигание флага _ 
true.

Код: Выделить всё

float Target::TakeDamage(const float damage) {
if (energy_ > 0.0) {
energy_ -= damage;
if (energy_ 
А теперь целевое обновление: < /p>
 void Target::Update() {
if (burning_) {
burning_ = target_blast_->UpdateBlast();
}
RestoreTarget();
}
< /code>
, который вызывает обновление взрыва, где я думаю, что моя логика не удается < /p>
bool Explosion::UpdateBlast() {
if (frame_ >= max_frames_) {
frame_ = 0;
return false;
}
const float dt = GetFrameTime();
if (accumulated_time_ >= explosion_frame_rate_) {
frame_++;
accumulated_time_ = 0.f;
}
else {
accumulated_time_ += dt;
}
return true;
}
По моему мнению Frame _ должен обновить от 0 до max_frames _ (9 в данном случае), но он никогда не выходит за рамки 0. Я добавил std :: cout

Подробнее здесь: https://stackoverflow.com/questions/797 ... -explosion
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»