gpt4 book ai didi

c++ - 子弹与敌人相交太多次(太频繁地通过更新循环运行)

转载 作者:行者123 更新时间:2023-11-28 06:59:28 25 4
gpt4 key购买 nike

for (int i = 0; i < playerBullets.size(); i++)
{
// Ship projectile hit enemy
if (IntersectsWith(playerBullets[i].ReturnBoundingBox()) || IntersectsWith(playerBulletsTwo[i].ReturnBoundingBox()))
{
//Deal with enemies response to collision
//Do damage
Damage();

if (ReturnHealth() <= 0)
{
this->mobsKilledCounter++;
SetCurrentTexture(currentTextureKey);
}
}
}

发生的事情是子弹击中敌人并运行代码并造成伤害(这就是我想要的),但随后它连续运行同一颗子弹后的代码(例如每秒 1000 次),杀死敌人瞬间。这段代码在我的更新循环中,这就是它不断经历它的原因。

有谁知道我怎样才能阻止它?我尝试了 bool 值,但效果不是很好,因为我使用的是 vector 和多个子弹/敌人。

最佳答案

我需要看看你是如何处理你的“子弹”对象的,也许还会看到“更新循环”,但我会在那里提出一些建议:

1 - 这些“子弹”是否在碰撞时被摧毁?如果循环继续运行,并且子弹仍然在那里,那么每次循环运行时它们都会被检测到并造成伤害,直到它们“退出”与它们碰撞的对象!

2 - 您是否考虑过为玩家每秒承受多少伤害设置一个冷却计时器?或者你的子弹有一个“bool has_dealt_damage_to_player”标志?

此外,我不知道这是在做什么: this->mobsKilledCounter++;祝你好运。也许尝试一个像样的调试器?您使用的是什么 IDE?

关于c++ - 子弹与敌人相交太多次(太频繁地通过更新循环运行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22698190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com