Two safety warnings:
First : do not try this while standing.
Second: keep bucket ready even if you are sitting.
I tried something like your locomotion idea, and result was not nice, luckily i could avoid all more drastic consequences.
I think your idea of translating motion controller location to new camera origin will not work. It is because when you snap camera to location of motion controller, it will have new offset relative to camera, and next tick it will snap camera to that new offset.
But you can use forward vector instead, and do small increments.
[motion controller forward vector] * [1,1,0] then normalize it. This will give you horizontal vector in direction controller is facing
Then on event tick: [new camera pawn world location] = ]camrea pawn location] + [forward vector] (from above) * distance you want travel
That is all for moving, not exactly like you wanted but something like that.
Ps. VIVE motion controllers are more comfortable if you rotate forward vector 60 degrees down (its angle between handle and forward vector). Not really needed for motion (you nullify Z values), but handy for aiming.
To rotate forward vector do this:
- Use Rotate vector around axis node.
- vector to rotate is: [controller forward vector]
- angle should be 60
- vector to rotate around is: [controller right vector]
Result will be forward vector rotated down by 60 degrees,.