【发布时间】:2014-04-24 14:35:08
【问题描述】:
我目前正在制作一个自上而下的 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);
}
精灵和子弹出现在屏幕上但不动,我不知道为什么。
【问题讨论】:
-
您是否定期执行更新?我的意思是,如果你调用 update 1 次,你不应该期待任何动作。
-
它们只是在更新功能中。
-
*new Bullet(playerX, playerY, 100)太可怕了,它应该只是Bullet(playerX, playerY, 100),因为它是按值传递的,你正在泄漏新分配的内存。啊。 -
@unwind 它泄漏了......
-
什么是 deltaT ?记住 0 * x = 0