Overcomplicated and extremely inefficient. Not blaming you…Tutorial you followed is bad. I’m not going to name names on that one. But you should never be enabling input on an Actor like this.
Issue here is each Actor you have in the level will fire the Interact logic. So if you have 10 desks and 15 file cabinets, then each time you hit E to interact you have 25 actors in your level executing the interact logic. 25 line traces, 25 casting to character etc etc etc.
If the Input is consumed, then you’ll have only 1 firing, but it may not be the one you want to interact with.
You should be using Blueprint Interfaces and each Drawer type (s,m,l etc) should be a child class of a BP_Drawer (parent). The parent class will contain all the logic for Lerping the drawer based on is X axis. And it will contain a BP Interface event to execute the logic.
With that said…
Create a Blueprint Interface. Right click in content browser: Blueprints → Blueprint Interface
Rename the new function to “Interact”. Compile, Save and close the BPI.
Open your character class, go to Class Settings, scroll down to interfaces and ADD the BPI you just created. Compile and Save.
In the Event Graph or other (new graph) Apply the following code. If you have an Input action key bound, use it versus what I have in place. For the camera just use your camera. My character has multiple, thus the current camera obj ref.
Next, Create a new BP Actor class. Name it BP_Drawer.
Go to Class Settings and ADD the BP Interface.
Go to Viewport Tab Add a Scene Component. Name it Root. Then drag it on top off the default scene component. This will replace it with our new component.
Next, Add a Static Mesh Component. Set collision preset to BlockAllDynamic.
Add the Following Variables.
- Open? (bool, false as default)
- Draw Length (float)… Tick instance editable.
- Closed Location (Vector)
- Open Location (Vector)
Next, Add the following node logic.
Class Settings → Class Options → Generate Abstract Class (ticked).
Compile and Save.
In the content browser Right click on the BP_Drawer class and Create Child Blueprint Class.
Name the class whatever you want. Open the new class, go to view port tab and change the mesh.
Next go to Top orthographic view and align the front of the drawer mesh with the grid.

Now go to Left or Right Ortho and align the bottom of the mesh with the grid.

These two adjustments will make it a lot easier to align your drawers with the desk/file cabinet etc.
Next set your Draw Length float. This is how far out the drawer will move.
From here it’s just dragging in your drawers, aligning them with your desk/file cabinet mesh and testing. Here’s a simple demo of it in action.