The Vector3 bobMoveDir always returns (0.0, 0.0, 0.0), anybody know why?

float ySpeed = rodRange / bobDist.y;
float xSpeed = rodRange / bobDist.x;
Debug.Log(ySpeed + ", " + xSpeed);
Debug.Log(fishSwimSpeed);
Debug.Log(Time.deltaTime);
float moveX = xSpeed * fishSwimSpeed * Time.deltaTime;
Debug.Log(moveX);
float moveY = ySpeed * fishSwimSpeed * Time.deltaTime;
Debug.Log(moveY);
Vector3 bobMoveDir = new Vector3(moveX, moveY, 0);
Debug.Log(bobMoveDir);
bobber.position += bobMoveDir;

for context, rodRange = 4, bobDist is the distance from mouse to the player, fishSwimSpeed = 1,

Uhm you are aware of the fact that Vector3.ToString does round the values to 1 decimal place? Just run the numbers. You said bodDist is the distance from the mouse to the player. What units do we talk here? Screen space pixels? or worldspace units? If it’s screen space pixels then bobDist would be relatively large. Most likely larger than rodRange That would make xSpeed and ySpeed relatively small ( < 1 ). At a framerate of 60 fps deltaTime will be 1/60 == 0.016666. So since all your other factors are around 1 or maybe even lower the numbers in your bobMoveDir vector would generally be smaller than 0.1. So you wouldn’t see the values when you print them out like this.

Try this instead:

Debug.Log("bodMoveDir: " + bobMoveDir.ToString("F5"));

This will print the vector with 5 digits behind the decimal point. Also you should avoid just logging numbers without a proper description. It’s very easy to get lost between all the logged numbers. It’s also possible that some other script also logs some other values so it becomes extremely difficult to actually identify which log entry corresponds too which Debug.Log call.