精灵和项目符号不移动C++
Sprites and Bullets not moving C++
我目前正在制作一款自上而下的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扩展。我认为您还必须使用"跟踪引用"才能修改集合中的对象。我认为您现在只是在修改循环变量。
相关文章:
- 将对象移动到std::shared_ptr
- 何时在引用或唯一指针上使用移动语义
- 如何从具有移动语义的类对象中生成共享指针
- 将shared_ptr移动到<StructA>shared_ptr<变体<结构A、结构 B>>
- C / C++ 移位/偏移/向左或向右移动位图?
- MSVC将仅移动结构参数解释为指针
- 自定义先决条件对移动分配运算符有效吗
- 返回值优化:显式移动还是隐式
- 当有分配器意识的容器被复制/移动时,反弹分配器是否被复制/移走
- 为什么复制而不是移动数据元素?
- 可以使用移动语义更改或改进此C++代码吗?
- 使lambda不可复制/不可移动
- c++在使用指针时移动语义
- 将QGraphicsItem的移动区域限制在多边形区域内
- SendInput()鼠标移动计算
- 按值 C++ 返回时进行双倍移动
- 移动二维数组中的字符
- 为什么不调用移动构造函数?(默认情况下只有构造器,没有别的)
- 安全到标准:移动会员?
- OpenVR:向视图方向移动