所以我有一个名为player的精灵。
如果我输入
player.move(3,4);
在我的循环中,玩家每帧移动那么多。
但是如果我做了一个功能。
int updatePlayerPos(sf::Sprite player1)
{
player1.move(3, 4);
return 0;
}
然后使用
在主循环中调用它updatePlayerPos(player);
它没有做任何事情。
我犯了什么错误?
提前致谢。
答案 0 :(得分:4)
这是因为精灵是按值传递的,这意味着该函数具有精灵的副本。你可以对副本做任何事情,但原件根本不会改变。您可能希望通过引用传递它:
int updatePlayerPos(sf::Sprite& player1)
// ^
// Note the ampersand