gpt4 book ai didi

c++ - 帧率独立动画问题

转载 作者:行者123 更新时间:2023-11-28 08:12:33 25 4
gpt4 key购买 nike

无论出于何种原因,我的角色向左移动的速度比向右移动的快。它至少快两倍。

这是检查角色移动的代码部分:

if(moving)
{
Uint32 delta = g_delta_get_ticks();
if(!g_holding_a)
{
position.x += accel * (delta / 1000.f);
facing = right;
}
if(!g_holding_d)
{
position.x -= accel * (delta / 1000.f);
facing = left;
}
}

现在,我的第一个猜测是计时器的行为很有趣,但是,即使放置像 accel * (50/1000.f) 这样的静态值也会导致相同的行为。

现在,如果我只是将位置设置为 += 和 -= 2,它就可以正常工作。有什么想法吗?

最佳答案

我怀疑截断给您带来了麻烦。当您说 some_int += some_float(或 some_int -= some_float)时,算法以 float 完成,然后截断为整数。所以如果 some_int 是 100 而 some_float 是 1.5,那么在 some_int += some_float 之后,你会得到 101(从 101.5 截断)。但是在 some_int -= some_float 之后,你得到 98(从 98.5 截断)。

由于您正在为 position.x 使用 GLuint,请尝试在添加或减去之前将调整截断为 GLuint:

GLuint d = accel * (delta / 1000.f);
if (!g_holding_a) {
position.x += d;
facing = right;
}
if (!g_holding_d) {
position.x -= d;
facing = left;
}

关于c++ - 帧率独立动画问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8628306/

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