To help gain more insight into your problem, I recommend liberally sprinkling Debug.Log() statements through your code to display information in realtime.
Doing this should help you answer these types of questions:
is this code even running? which parts are running? how often does it run?
what are the values of the variables involved? Are they initialized?
Knowing this information will help you reason about the behavior you are seeing.
Also, here’s a cheap and cheerful CC-based solution, full code and package:
I wrote about this before: the Unity example code in the API no longer jumps reliably. I have reported it. Here is a work-around: