0

そのため、衝突計算にオクツリーを使用して、プレイヤー オブジェクトとオブジェクト (立方体/ピラミッド/球体は実際には関係ありません) との間で衝突を発生させる必要がある割り当てがあります。プレイヤーがオブジェクトと衝突すると、オブジェクトを削除する必要があります。私はそのような機能を持っています

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 が必要です。私は私のコースで私の友人の一人に彼が何を持っているか尋ねました.彼は私のものとほとんど同じであり、疑問が生じます. さらに情報が必要な場合はお知らせください。

4

1 に答える 1

0

ソース ファイルがヘッダー ファイルで宣言されているものを使用している場合は、別のソース ファイルにも含まれている場合でも、そのヘッダー ファイルをソース ファイルに含めます。インクルード ガードを使用して、何も再宣言しないようにします。

于 2013-03-01T20:49:41.330 に答える