The scenario:
I have a character blueprint I’m using for its collision capsule quality, which I made the root, to which I attached a camera. I need the XY rotation of the capsule and the relative rotation of the camera, the values of which I set/store in float variables for later use.
From the character BP, we get the relative rotation (I get relative transform first, for the target. I then delete the transform and drag out the isolated relative rotation node. (The issue also arises off relative transform and getting the relative rotation that way from the transform itself, instead of directly off the target.)
When I then print the value off this, after normalizing, multiplying and including frac, I get a good value, as expected. But If I set that value into a float variable, I get 0 on the output of that float, even if that float is being set nowhere else but off that frac.
The fix:
I use the target (without transform) to get socket rotation instead, and the value off the downstream frac is good, as before, but this time I “can” in fact set the value in the float variable without issue, as a check on the variable’s output matches what I had off the frac.
Why can’t I set/store the return off the transform relative rotation or the isolated relative rotation? Why must I use a socket in this scenario?