I use CharacterController.Move in FixedUpdate of a model, the motion vector is calculated with some spec rules. The motion vector itself is not NaN, and before Move the position is right. But after Move it becomes NaN. My script is some like : Code (CSharp): motion = calc_motion(); pos1 = playercc.transform.position; playercc.Move(motion); pos2 = playercc.transform.position; And I catch some logs like : model move invalid : (0.1, 0.0, -0.1) (NaN, NaN, NaN) (9.4, 0.0, -0.2) (NaN, NaN, NaN) 1st vec is motion, 2nd is current position, 3rd is pos1, 4th is pos2. Unity version is 2017.4.3. Seems like this only happens on Windows, not on iOS nor on Android.