Hi, I’m trying to adjust my custom timedelta (timedelta * (the velocity vector’s magnitude + 1)) before applying it to the same velocity vector going into a character controller. The faster you move, the slower time goes. Despite the input being fine, unity is showing NaN errors.
CONSOLE
Input
velocity = (0.0, -9.8, 0.0). delta = 0.005328088. velocity*delta = (0.0, -0.1, 0.0)
UnityEngine.Debug:Log(Object)
PlayerRunner:Update() (at Assets/PlayerRunner.cs:142)
Output
transform.positionWithLocalOffset assign attempt for ‘Player’ is not valid. Input positionWithLocalOffset is { NaN, -Infinity, NaN }.
UnityEngine.CharacterController:Move(Vector3)
PlayerRunner:Update() (at Assets/PlayerRunner.cs:148)
CODE
Create the custom timedelta:
newdelta = Time.deltaTime / ((player.velocity.magnitude * .5F) + 1F);
Test and then apply the timedelta:
Vector3 deltaVelocity = velocity * delta;
Debug.Log ("velocity = " + velocity + ". delta = " + delta + ". velocity*delta = " + deltaVelocity);
if (float.IsNaN (deltaVelocity.x) || float.IsNaN (deltaVelocity.y) || float.IsNaN (deltaVelocity.z))
{
deltaVelocity = velocity * Time.deltaTime;
Debug.Log ("BAD TIMEDELTA!");
}
controller.Move(deltaVelocity); // Using char controller collisions
The NaN errors only appear if I multiply the original timedelta; removing the multiplication results in clean code.
I’ve been stuck on this for while and can’t find anything useful, please help? This is a vital component, I cannot test the game without it.