found a potential solution to my problem by making movement set velocity directly instead of adding to movement input, needs a few further workarounds to other problems this causes though