Zoom in / Out / Rotate object in front of camera

Hi how are you community?
I am trying to make a system where a player could interact with an object/item and zoom in / out, rotate it.
Something like this from Allison Road gameplay trailer:

Would you recommend me some approach?
for example: simply modify the position of the object and put it in front of camera? I don’t think i could make it look “clean” but is the only think i take in mind.


I think you’d need a controller to possess that object so that input commands would work with it. You would then need to map out exactly what those input actions do, like using the mouse wheel to scroll in and out, and you would place those inside the event graph of the object you are interacting with. Then I guess you could try using an arrow component to position where you want the object relative to your camera and play an animation that places that object at the point of that arrow. I don’t know how to implement it but I’m guessing that should be able to point you to an acceptable solution.

Interpolate the location & rotation of the object to a fixed location & rotation in front of the camera.
You may need to use a bit of math to adjust this location based on the size of the object.
The interpolation could be controlled via tick, timer or curve - up to you.

While an object is held, redirect what ever input you wish to use to manipulate the object rotation & camera field of view.

Once done, interpolate the location & rotation of the object back to its original positional an reset the camera field of view.

ok i think i will going this way =)
thanks Kris and kthor94 for the help!

Hi, Today I finally could work a little with this and get this:

Now i have other question, Is there a proper way to map two different actions to same keyboard key?
My Pawn walks with WASD keys, but when I have the item “Zoom in” I want that WASD rotates the item instead and prevent the player movement
I know I can make a simple If(bIsExaminingItem) on “Walk” function and if true just rotate the “current item in view” and skip the walk/move code.
But there is a “nicely” way of do this?

(Sorry for the video quality, is just for explain myself better due my English isn’t good)

Can either be done in C++ / BP like you’re doing it now or you could use the capture / release input Blueprint nodes to reroute input as required.
Up to you what you prefer to use.
They all get the job done.

Hello Kris, to clarify, this solution does not require possession? I personally would be grateful to anyone with a snapshot of the basic BP node set up for this.