I finally worked out an omnidirectional solution.
The missing key to understanding this for me was the realization that adding the direction the camera is facing (aka the forward vector) with the current character location will get a location in front of the character. This is illustrated below:
Getting the forward vector from a component takes into account the whole rotation, including pitch and roll, where I just want the forward direction based on the yaw/z rotation of the camera. You can split the struct pins instead of breaking them (aka BreakTransform
), and then making new ones, to clean this up a bit too.
From there you just add or subtract your forward and right directions to get your desired end location, multiply it by a step factor (for how far away you want the character to move) and then add it to your current character location!