我的功能有问题。我正在使用SFML库,我不知道为什么setPosition()剂量有效。但是,当我将setPosition()放在函数调用下时,它工作正常。有什么建议吗?
void foodRandPos(Sprite spriteFood, int blockDimensionXY, int foodDimensionXY, int windowSizeX, int windowSizeY ){
int frameWidth = (windowSizeX - (2 * blockDimensionXY) ) / blockDimensionXY;
int frameHeight = (windowSizeY - (2 * blockDimensionXY) ) / blockDimensionXY;
int foodRandPosX = ( ( (rand()%frameWidth) + 1) * foodDimensionXY);
int foodRandPosY = (( (rand()% frameHeight) + 1) * foodDimensionXY);
spriteFood.setPosition((float) foodRandPosX + 300, (float) foodRandPosY);}发布于 2015-04-24 15:16:54
您希望通过引用将Sprite传递到函数中。您正在将其复制到代码中,并且setPosition调用正在移动副本。
将函数签名更改为
void foodRandPos(Sprite & spriteFood, int ... ){发布于 2015-05-13 16:55:31
如果不想将值转换为浮动在setPostion()中,可以使用sf::Vector2f()。就像这样,您可以将两个参数放在这个参数中,它们将被自动转换为浮动。
发布于 2015-05-23 09:43:41
正如Omera提到的那样,sf::Vector2f()允许您输入两个参数,特别是(x,y)坐标,这使得它在代码中更容易实现。然后,只需将Vector2f作为要设置的位置传递。
https://stackoverflow.com/questions/29851108
复制相似问题