精灵和项目符号不移动C++

Sprites and Bullets not moving C++

本文关键字:移动 C++ 符号 项目 精灵      更新时间:2023-10-16

我目前正在制作一款自上而下的2D游戏,并试图将子弹和精灵渲染到屏幕上。出于测试目的,我设置了一个新的项目符号和精灵,当按下箭头键时进行渲染,并且两者都应该向上倾斜。

这就是我通过将新精灵和项目符号添加到向量中来调用它们的地方;

if(inputState->isKeyPressed(VK_UP))
{
    enemys.push_back(Enemy(playerX, playerY, 100));
}
if(inputState->isKeyPressed(VK_DOWN))
{
    bullets.push_back(Bullet(playerX, playerY, 100));
}

然后我在更新方法中更新它们的可能性;

for each(Enemy e in enemys)
    {
        float x = e.getEnemyX();
        float y = e.getEnemyY();
        x += PLAYER_MOVEMENT_SPEED * deltaT;
        y += PLAYER_MOVEMENT_SPEED * deltaT;
        e.setEnemyCoord(x,y);
    }
for each(Bullet b in bullets)
{
    float x = b.getX();
    float y = b.getY();
    x += PLAYER_MOVEMENT_SPEED * deltaT;
    y += PLAYER_MOVEMENT_SPEED * deltaT;
    b.setCoord(x,y);
}

然后我渲染矢量中的所有对象;

for each(Enemy e in enemys)
{
    float x = e.getEnemyX();
    float y = e.getEnemyY();
    renderEnemy(x,y);
}
for each(Bullet b in bullets)
{
    float x = b.getX();
    float y = b.getY();
    renderBullet(x,y);
}

精灵和子弹出现在屏幕上,但没有移动,我不知道为什么。

您使用的是可怕的for each Microsoft扩展。我认为您还必须使用"跟踪引用"才能修改集合中的对象。我认为您现在只是在修改循环变量。