I’m not clear on exactly what you want to accomplish, but I think the central issue here is that in your game, there is perhaps no fixed ‘Up’ direction?
DirectionalVector.Rotation()
, for example, will create a rotator making the assumption that Z is up. I think it’s probable that there are many instances in the ACharacter code which do the same, so you may not even be able to use ACharacter, or anyway it’s standard movement component, in this scenario.
Unrelated to your issue, but look at FVector::Normalize()
, you can use that instead of dividing by the sqrt as you have done.