リンクされたリストに非常に慣れていないため、これが機能しない理由がわかりません。
プログラムはクラッシュせず、コンパイラはエラーを表示しませんが、doActions()
実行されません。
これは関数のコードで、メイン ループで呼び出されます。
void Action()
{
clsParent* pCurrent;
pCurrent = pHead;
while(pCurrent != NULL)
{
clsPlayer* pPlayer;
pPlayer = dynamic_cast<clsPlayer*>(pCurrent);
if(pPlayer != NULL)
{
pPlayer->doActions();
}
pCurrent = pCurrent->pNext;
}
}
これは、リスト内のすべてのプレイヤーを呼び出すことになってdoActions()
います (ただし、プレイヤーは 1 つしかありません)。
doAction()
リンクされたリストをコードに実装しようとする前は完全にうまく機能していたので、そうではないことがわかりました。それが何をするのか興味がある人のために、プレイヤーがジャンプしているかどうかをチェックし、それに応じてプレイヤーを動かします。
編集:他の機能を入れることができ、それが機能することに気づきました
これは機能します:
void clsPlayer::jump()
{
if(onGround)
{
jumping = true;
yPos -= gravitySpeed;
animationState = 3;
}
}
これはそうではありませんが
void clsPlayer::doActions()
{
if(!onGround)
{
yPos += gravitySpeed;
}
if(jumping)
{
jumpTimeCounter++;
yPos -= 20;
if(jumpTimeCounter > 10)
{
jumping = false;
jumpTimeCounter = 0;
}
}
}