C ++ SFML精灵位置在功能时不更新

时间:2013-09-05 11:12:48

标签: c++ sfml

所以我有一个名为player的精灵。

如果我输入

player.move(3,4);

在我的循环中,玩家每帧移动那么多。

但是如果我做了一个功能。

int updatePlayerPos(sf::Sprite player1)
{
player1.move(3, 4);
return 0;
}

然后使用

在主循环中调用它
updatePlayerPos(player);

它没有做任何事情。

我犯了什么错误?

提前致谢。

1 个答案:

答案 0 :(得分:4)

这是因为精灵是按值传递的,这意味着该函数具有精灵的副本。你可以对副本做任何事情,但原件根本不会改变。您可能希望通过引用传递它:

int updatePlayerPos(sf::Sprite& player1)
//                            ^
//          Note the ampersand