SFML setPosition()
SFML setPosition()
本文关键字:setPosition SFML 更新时间:2023-10-16
我的函数有问题。我正在使用SFML库,我不知道为什么setPosition()dosent有效。但是,当我将 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);}
你想通过引用将精灵传递到函数中。您正在代码中复制它,并且副本正在由setPosition
调用移动。
将函数签名更改为
void foodRandPos(Sprite & spriteFood, int ... ){
如果你不想在你的setPostion()中将你的值转换为float,你可以使用sf::Vector2f()。像这样,您可以将两个参数放入此参数中,然后它们会自动转换为浮点数。
就像
Omera提到的sf::Vector2f()允许你输入2个参数,特别是(x,y)坐标,这使得它在代码中更容易实现。然后,您只需将 Vector2f 作为要设置的位置传递即可。
尝试将此语句作为参数
sf::vector2f((float) foodRandPosX + 300.0f, (float) foodRandPosY)
而不是
(float) foodRandPosX + 300, (float) foodRandPosY
虚空食物RandPos(雪碧精灵食物,
你通过值传递雪碧食物,也许你想把它变成一个指针或一个引用
void foodRandPos(Sprite & spriteFood, int blockDimensionXY, int foodDimensionXY, int windowSi)
当你将一个参数传递给一个函数时,它会复制该值并将其发送到函数,基本上sprtieFood就像一个局部变量,一旦作用域脱离函数,它就会被"删除",所以你不想要它的值你想要它的地址在这种情况下,你传递对该变量的引用
相关文章:
- SFML纹理像播放器
- 如何使用AngelScript注册SFML Vector2运算符
- 如何修复sfml c++代码编译错误
- SFML library: http request
- 落砂模拟碰撞检测C++和SFML
- 使用 SFML 和 C++ 将 Pixel 打印到屏幕上
- SFML RenderWindow打开窗口需要很长时间
- 矢量下标超出SFML游戏中的范围
- 获取 SFML 窗口的 HWND 和高可用性?
- 将 Vulkan 与 SFML 结合使用?
- SFML 文本未绘制在窗口上
- SFML 碰撞永远不会在我的系统中注册
- 使用对象数组对 SFML 进行动画处理
- (SFML)按下键时,播放器构造函数未使用正确的动画进行更新
- 如何使用 SFML 在贪吃蛇游戏中定义游戏结束?
- 如何通过多类"Union variable" (sfml) 使用轮询事件
- 1d.exe找不到SFML文件?
- 当我尝试通过 mingw 使用 CMake 和 SFML 库编译项目时出错
- Declaration of IntRect SFML
- SFML setPosition()