gpt4 book ai didi

C++ 不能增加一个变量

转载 作者:太空狗 更新时间:2023-10-29 20:39:30 26 4
gpt4 key购买 nike

我正在为一个小型游戏引擎开发动画类,由于某种原因,帧计数器不想增加,它一直停留在 0 或 1。

这是 Animation::Step 代码(这里是增量应该发生的地方):

void Animation::Step()
{
...

time += (float)glfwGetTime();
if (time >= Speed)
{
time = 0;
if (f++ >= count - 1)
{
...
}
}

// Here I do some math to get a clip rectangle...

...
}

现在这是调用 Animation::Step 的部分:

inline void DrawAnimation(Animation ani, Vec2 pos, BlendMode mode, DrawTextureAttributes attr)
{
ani.Step();

...
// draw texture
}

在游戏主循环中:

void on_render(Renderer r)
{
DrawTextureAttributes attr;
attr.Scale = Vec2(1.5);

r.DrawAnimation(ani, Vec2(320, 240), BlendMode::Normal, attr);
}

编辑:类定义:

class Animation
{
public:
Animation() {}
Animation(Texture2D tex, int rows, int cols, int *frames, float speed, bool loop=false);
Animation(Texture2D tex, int rows, int cols, float speed, bool loop=false);

Texture2D Texture;
std::vector<int> Frames;
float Speed;
bool Loop;

float getCellWidth();
float getCellHeight();

void Step();

UVQuad RETUV;

private:
int f, r, c; // here's F
float w, h;
float time;
};

好的,先谢谢了! (抱歉我的英语不好)

最佳答案

inline void DrawAnimation(Animation ani...

每次将对象按值传递给此函数时。因此,任何增量都将应用于此拷贝而不是您的原始值。您可以通过引用传递以获得所需的行为。

inline void DrawAnimation(Animation& ani...

关于C++ 不能增加一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27708436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com