The length of your projectedForward vector changes with the camera angle, it needs to be normalized to be used as a direction vector.
The same would happen to the projectedRight vector, if the camera was ever tilted left/right. Since it only ever tilts up/down or rotates around, the right vector will always stay parallel to the ground and its project length won’t change.
You want to normalize the move vector after creating it, this ensures the speed will stay constant whatever you do (you probably then need to decrease the speed to compensate the move vector now being one unit long instead of 100s).
Hm, do you still have the * 100f in the calculation of projectedForward? This would mean that forward easily overpowers right if you press both.
Maybe it’s best to normalize both vectors before calculating move and then normalize it again. If you just remove the times 100, the diagonal will slightly change direction when up look up or down.
As for continuing walking when you let go, did you check the sensitivity and gravity settings in the input manager? They control how quickly axes change when you press/release keys.
I don’t agree. You’re basically achieving the same result with two different approaches and there’s nothing fundamentally flawed with the approach @whydowexist posted here. I think it’s smart.