我正在使用为我所使用的课程提供的游戏引擎(也包含OpenGL),并且我使用一个阵列(称为基础)来存储一些敌人的精灵。在80帧之后创建一个新的精灵(我确定这是一个更好的方法来做这个而不是递增一个整数)或者更确切地说是指向精灵的指针。在下面的例子中,我想设置敌人的速度向玩家移动,除了它只运行一次,因为它一旦创建了速度就设定了速度,但是永远不会设置相同的敌人。又速度了。
void CMyGame::OnUpdate() //60 frames
{
if (spawnTime > 80) spawnTime = 0;
spawnTime++;
if (spawnTime == 80)
{
CSprite* pBasicEnemy = new CSprite(rand() % 800, 575, basic_texture);
basics.add( pBasicEnemy);
basicEnemyVX = player.GetX() - pBasicEnemy->GetX();
basicEnemyVY = player.GetY() - pBasicEnemy->GetY();
pBasicEnemy->SetVelocity(basicEnemyVX, basicEnemyVY);
}
}
我尝试过的一件事只是将精灵添加到if语句中的数组而不是包含所有内容。它运行但奇怪的是,速度并没有每帧更新,尽管它现在是OnUpdate()函数的本地而不是if语句。
void CMyGame::OnUpdate() //60 Frames
{
if (spawnTime > 80) spawnTime = 0;
spawnTime++;
CSprite* pBasicEnemy = new CSprite(rand() % 800, 575, basic_texture);
if (spawnTime == 80)
{
basics.add( pBasicEnemy);
}
basicEnemyVX = player.GetX() - pBasicEnemy->GetX();
basicEnemyVY = player.GetY() - pBasicEnemy->GetY();
pBasicEnemy->SetVelocity(basicEnemyVX, basicEnemyVY);
}
知道如何以某种方式每帧更新每个敌人的速度吗?