因此,对于一个大学项目,我希望在特定的时间范围内尝试改变精灵的色调。目标是让一组岩石在5秒内从灰色变成橙色(模拟加热它们),然后在接下来的5秒内再次从橙色变成灰色(模拟冷却它们)。
这是使用DirectXTK,特别是SpriteBatch来完成的,但是我似乎在控制加热和冷却逻辑方面遇到了一些问题。目前,岩石加热到橙色,但不会冷却回来。
岩石的更新功能,以及我用来控制冷却的进一步的HeatDelay功能包括在下面。
timeToChangeColour在5处初始化。
void RockFade::Update(float timeDelta)
{
if ((timeDelta >= timeToChangeColour) && (heatDelay == false))
{
this->heatUp = false;
HeatDelay();
timeToChangeColour = timeDelta + 10;
}
else if ((timeDelta < timeToChangeColour) && (heatDelay == false))
{
this->heatUp = true;
}
if (heatUp)
{
this->newBlue -= 0.002f;
}
else
{
this->newBlue += 0.002f;
}
this->spriteTint = DirectX::SimpleMath::Color{ 1.0f, 1.0f, newBlue, 1.0f};
}
void RockFade::HeatDelay()
{
heatDelay = true;
Sleep(5);
heatDelay = false;
}任何帮助都是非常感谢的!
https://stackoverflow.com/questions/41448322
复制相似问题