そのため、衝突計算にオクツリーを使用して、プレイヤー オブジェクトとオブジェクト (立方体/ピラミッド/球体は実際には関係ありません) との間で衝突を発生させる必要がある割り当てがあります。プレイヤーがオブジェクトと衝突すると、オブジェクトを削除する必要があります。私はそのような機能を持っています
void BinPart::ProcessCollisions(int &nbrTests, int &nbrCollisions){
if(hasChildren())
{
for(int i = 0; i <= 7; i++)
{
child[i]->ProcessCollisions(nbrTests, nbrCollisions);
}
}
int n = objects.size();
if(n >= 2)
{
for(int i = 0; i < n - 1; i++)
{
for(int j = i + 1; j < n; j++)
{
nbrTests++;
if(player->collidesWith(objects[j]))
{
objects.erase(objects.begin() + j);
}
else
{
if(objects[i]->collidesWith(objects[j]))
{
nbrCollisions++;
}
}
}
}
}
if(n >= 1 && parent != NULL)
{
parent->ProcessBorderCollisions(this, nbrTests, nbrCollisions);
}
}
player->collidesWith(objects[j]);
binPart のヘッダー ファイルで player が「未定義」であるため、現在は機能しません。すべてのオブジェクトの作成元である Object 型の基本クラスの前方宣言があります。Object *player は Game.h にありますが、アクセスするには binPart が必要です。私は私のコースで私の友人の一人に彼が何を持っているか尋ねました.彼は私のものとほとんど同じであり、疑問が生じます. さらに情報が必要な場合はお知らせください。