You can do controllers with either approach. I suggest rigidbody designs. You’ll use FixedUpdate() which basically makes frame rate irrelevant. Nothing is going to cause an input delay, but the input manager can change the gravity of inputs so they smoothly accelerate between min max values which could appear as an input delay. Your code could also be doing that. Mass and drag can also create a similar effect on the rigidbody settings.
Thank you for helping me out. As far as I understand from seaching internet the character will move jittery if I move a rigidbody during fixedupate unless an interpolation is used. Some frames it will move more than once and others not at all, but the interpolation will make it look smooth right?