0

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

如果我输入

player.move(3,4);

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

但是,如果我做一个函数。

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

然后在主循环中使用

updatePlayerPos(player);

它不做任何事情。

我犯了什么错误?

提前致谢。

4

1 回答 1

4

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

int updatePlayerPos(sf::Sprite& player1)
//                            ^
//          Note the ampersand
于 2013-09-05T11:14:47.997 回答