대학 프로젝트에서 특정 시간대에 스프라이트의 색조를 변경하려고합니다. 목표는 5 초 동안 회색에서 오렌지색으로 변하는 것을 시뮬레이션 한 다음, 다시 5 초 동안 주황색에서 회색으로 다시 냉각시키는 것입니다 (냉각을 시뮬레이션 함).C++ DirectXTK SpriteTint 시간이 지남에 따라 변경
이 작업은 특히 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;
}
어떤 도움에 초기화되어 대단히 감사합니다!
이 말이 : 예컨대, 시간을 축적 할 수 있습니다 여기하려고 노력하고 기초로 사용하는 것을 달성을 향한 첫 걸음! 로직을 다시 지그하여 timeDelta와는 반대로 totalSeconds를 사용하여 문제를 해결했습니다. 감사합니다. –