SFML无法正确移动精灵
SFML not moving sprites correctly
sfml不会将精灵移动超过1像素(即使持有(。它还在释放被固定的箭头钥匙时将精灵移回其设定位置。
void Engine::mainLoop() {
//Loop until window is closed
while (window->isOpen()) {
processInput();
update();
sf::Sprite test;
sf::Texture texTest;
texTest.loadFromFile("img.png");
test.setTexture(texTest);
test.setPosition(50, 50);
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Up))
test.move(0, -1);
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Down))
test.move(0, 1);
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Left))
test.move(-1, 0);
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Right))
test.move(1, 0);
window->clear(sf::Color::Black);
window->draw(test);
renderFrame();
window->display();
}
}
在评论中提到您始终设置位置,您还在每个帧中重新创建精灵,因此即使您调用setPosition
作为旁注,您还在每个帧加载纹理,这非常低效!
这应该是您所追求的:
void Engine::mainLoop() {
sf::Sprite test;
sf::Texture texTest;
texTest.loadFromFile("img.png");
test.setTexture(texTest);
test.setPosition(50, 50);
//Loop until window is closed
while (window->isOpen()) {
processInput();
update();
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Up))
test.move(0, -1);
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Down))
test.move(0, 1);
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Left))
test.move(-1, 0);
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Right))
test.move(1, 0);
window->clear(sf::Color::Black);
window->draw(test);
renderFrame();
window->display();
}
}
相关文章:
- 将对象移动到std::shared_ptr
- 何时在引用或唯一指针上使用移动语义
- SFML无法正确移动精灵
- 在鼠标位置移动精灵
- 精灵不在SFML中移动
- 减慢精灵的移动速度
- 将聚焦的精灵逐渐移动到目标位置(C++和SFML)
- 如何顺利移动精灵
- 在 Cocos2DX 中移动动画精灵和路径
- SFML在另一个类中绘制移动精灵
- 当我移动我的精灵时,它一直从窗户掉下来
- 以相同的速度将精灵从一个点移动到另一个点
- 移动精灵和处理事件
- 用VBO和FBO绘制一个移动的精灵
- c++停止敌人精灵相互移动
- 精灵和项目符号不移动C++
- SDL2.0移动精灵与键盘
- C++ DirectX11 2d 游戏:阻止敌人精灵相互移动
- 在矢量中移动精灵
- 防止将一个精灵移动到另一个精灵上