Ich arbeite in einem Spiel an einer Charaktercontroller -Klasse. Wenn sich der Charakter aufhört, sich zu bewegen, soll er allmählich zu einem Stopp langsamer werden, anstatt abrupt zum Stillstand zu gehen. Aus irgendeinem Grund "funktioniert es" nur richtig, wenn ich eine relevante Variable aus dem Interpolationsalgorithmus ausgibt. Es kann mit Std :: Cout, Printf oder einfach in eine Textdatei geschrieben werden. Die betreffenden relevanten Variablen können nicht unter Verwendung von Haltepunkten debuggen werden, da sie von einer zeitbezogenen Variablen abhängig sind, die in einem anderen Thread festgelegt ist, nämlich die der Zeit zwischen dem letzten und dem aktuellen Rahmen, der allgemein als "Delta-Zeit" bezeichnet wird. Ich habe ein Video auf YouTube gepostet, um ein gründlicheres visuelleres Hilfe meines Dilemmas zu erhalten:
Zusammenfassung: Verwenden Sie COUT und es funktioniert. Verwenden Sie keine Cout, es funktioniert nicht.
Code: Select all
float t = brakeRate * Time::DeltaTime();
lastMovement.x = Tmath::Lerp(lastMovement.x, zero, t);
lastMovement.y = Tmath::Lerp(lastMovement.y, zero, t);
sceneObject->transform.position.x += lastMovement.x;
sceneObject->transform.position.z += lastMovement.y;
cout
#include
#include
void Lerp();
float initialValue = 22.0f;
float targetValue = 0.0f;
void SetTimeValues();
float lastTime;
float deltaTime;
int main()
{
glfwInit();
GLFWwindow* window = glfwCreateWindow(200, 200, "Minimal Reproducible Example", NULL, NULL);
glfwMakeContextCurrent(window);
while (!glfwWindowShouldClose(window))
{
SetTimeValues();
Lerp();
}
return 1;
}
void Lerp() {
initialValue = initialValue + (deltaTime * (targetValue - initialValue));
std::cout