SuperFreaksDev
Member
I'm having a very bizarre delta time problem that I can't figure out how to fix.
Accelerations actually work perfectly, since I followed this tutorial: https://web.archive.org/web/2016030...ksula.hut.fi/~hkankaan/Homepages/gravity.html
The problem is this: when I make my player object jump, and I apply gravity on the next frame, the jump height changes depending on the framerate. If I apply gravity on the same frame, then it works perfectly across all framerates and the object will reach the exact same height each frame.
Here's my delta time code that runs before the player object's events:
Here's my player object's code:
If I move the physics region below the actions (which contains jumping) region, the jump heights work perfectly, but if I keep it above the actions region, the jump heights become inconsistent. I have a feeling it has to do with the initial jump speed not having accelerations applied for one frame.
Accelerations actually work perfectly, since I followed this tutorial: https://web.archive.org/web/2016030...ksula.hut.fi/~hkankaan/Homepages/gravity.html
The problem is this: when I make my player object jump, and I apply gravity on the next frame, the jump height changes depending on the framerate. If I apply gravity on the same frame, then it works perfectly across all framerates and the object will reach the exact same height each frame.
Here's my delta time code that runs before the player object's events:
Code:
framerateDelta = (framerateInternal / 1000000) * delta_time;
Code:
#region //Controls
var xAcc = 0, yAcc = 0, xAccTemp = 0, yAccTemp = 0;
var delta = objGameController.framerateDelta;
var left = objGameController.controlsInput[@ 0, 0];
var right = objGameController.controlsInput[@ 0, 1];
var up = objGameController.controlsInput[@ 0, 2];
var down = objGameController.controlsInput[@ 0, 3];
var Abutton = objGameController.controlsInput[@ 0, 4];
var Bbutton = objGameController.controlsInput[@ 0, 5];
var inputHorizontal = right | (left << 1);
var inputVertical = down | (up << 1);
#endregion
switch (state)
{
case 0:
#region //State Normal
#region //Init
var onGround = ground[@ 0];
#endregion
#region //Physics
switch (ground[@ 0])
{
case true:
break;
case false:
yAcc += 0.25;
break;
}
#endregion
#region //Actions
if left = (buttonHold)
{
xAcc -= 0.5;
}
else if right = (buttonHold)
{
xAcc += 0.5;
}
if (Abutton = buttonPress)
{
if (onGround = true)
{
ySpeed = -7;
ground[@ 0] = false;
}
}
#endregion
xAccTemp = xAcc * delta;
yAccTemp = yAcc * delta;
xTemp += delta*(xSpeed + (xAccTemp * 0.5));
yTemp += delta*(ySpeed + (yAccTemp * 0.5));
xSpeed += xAccTemp;
ySpeed += yAccTemp;
xSpeed = clamp(xSpeed, -3, 3);
#endregion
break;
}