第一个函数调用将返回两个对象发生碰撞时的字符串冲突,因此我知道我的逻辑是真实的。然而,布尔检查没有返回,所以我很难过。如何返回for循环中的布尔值
template <typename T, typename U>
void checkCollision(std::vector<T> &vTower, std::vector<U> &vMonster)
{
for (int i = 0; i < vMonster.size(); i++)
{
for (int k = 0; k < vTower.size(); k++)
{
if (vMonster[i].getPositionX() + vMonster[i].getRadius() +
vTower[k].getRadius() > vTower[k].getTowerRangePositionX()
&& vMonster[i].getPositionX() < vTower[k].getTowerRangePositionX() + vMonster[i].getRadius() + vTower[k].getRadius()
&& vMonster[i].getPositionY() + vMonster[i].getRadius() + vTower[k].getRadius() > vTower[k].getTowerRangePositionY()
&& vMonster[i].getPositionY() < vTower[k].getTowerRangePositionY() + vMonster[i].getRadius() + vTower[k].getRadius())
{
std::cout << "Collided"
}
}
}
};
这从主
bool checkCollision(std::vector<T> &vTower, std::vector<U> &vMonster)
{
for (int i = 0; i < vMonster.size(); i++)
{
for (int k = 0; k < vTower.size(); k++)
{
if (vMonster[i].getPositionX() + vMonster[i].getRadius() + vTower[k].getRadius() > vTower[k].getTowerRangePositionX()
&& vMonster[i].getPositionX() < vTower[k].getTowerRangePositionX() + vMonster[i].getRadius() + vTower[k].getRadius()
&& vMonster[i].getPositionY() + vMonster[i].getRadius() + vTower[k].getRadius() > vTower[k].getTowerRangePositionY()
&& vMonster[i].getPositionY() < vTower[k].getTowerRangePositionY() + vMonster[i].getRadius() + vTower[k].getRadius())
{
return true;
}
else
return false;
}
}
}
这是一个无休止的循环窗口调用时没有返回。
if(function.checkCollision(myicetower, mymonsters))
std::cout << "TESTTESTTEST" << std::endl;
在第二个例子中,你只比较第一个怪物和第一个塔,因为你总是从那个点返回。 – aschepler
请修复您的问题标题。让它描述这个问题。其他人应该如何找到这个问题呢? –