Actor Blueprints unable to work individually from eachother

Hi all,

I have created two seperate actor BP’s, however I am unable to interact with both in the same session.

One static mesh will adopt the others BP and they cant be used in tandem? or so it seems.

See the video to see whats happening:

Any help would be appreciated, thanks.

1 Like

I’m curious about what the heck is happening but definitely need more information to solve this.

Are these a part of a marketplace asset or did you program yourself? I’d like to know the name of the asset. If it’s free then I can just test on my end.

Are the drawers in the desk a part of the same instance as the drawers in the cabinet?

Is there some code in the drawer bp to reference the parent and is it programmatically assigned?

One thing is for sure: This bug is goofy.

1 Like

They’re both from the vintage asset pack on turbosquid : Vintage office pack model - TurboSquid 1248818 Not free unfortunately.

I dont believe theyre a part of the same instance (I may be wrong as im quite new to Ue4). I simply highlighted the drawer body with each of its seperate components and imported them into an actor BP (did this with the cabinet and its components).

The drawer BP is as follows:

The BP for the file cabinet is very similar apart from a few differences in audio and values.

1 Like

That setRelativeLocation and timeline look standard to me. In fact I’m surprised that it’s bugging out with that.

I watched your video again and mystery solved. You’re setting the ref static mesh INSIDE the blueprint. What you want to do is actually inside the blueprint → select the ref static mesh variable → in the details panel → turn on “instance editable”,
then → back to the level-> select the drawer instance-> and in the drawers’ details panel set the ref static mesh.

1 Like

There seems to be no other options avalible even after turning on instance editable and the bug stiil at it.

Quite confused rn is an understatment.

1 Like


there is probably a good way to detect the forward direction of the cabinet mesh to determine the lerpto value, but this will get you a result fast

1 Like

How does this help overcome the fact that only one BP is able to work at once, it doesnt matter what components are in the scene root; Each static mesh actor that has a BP can only operate in exactly the same way as the most recent BP opened in the editor (sorry if im not explaining it too well).

Hey Papa, my last response to you was hasty.

In general, BPs are designed to operate independently from each other. So there should be no interaction between instances of Cabinet_BP and Drawers_BP unless you explicitly build them to interact with each other.

I noticed in your video that after shaking your head “no” after showing the problem on the cabinets, you edit the cabinets blueprint off-screen and then come back to show that they are working and now the drawers are broken. What are you doing off-screen?

Hi @PapaSheev66

Your problem is that you are tracing from the drawer bp, probably from both and it’s impossible to tell which one is taking priority over the other. The trace should be done only by the character and the character should be the one passing to the drawer BP what component it hit.

Try and remove the trace from one of the drawers and test them both in PIE, you should see the the local transform of the one still tracing should still be working on both.

Some other stuff not related: don’t think you need 2 timelines: Play and Reverse should do the job just fine.

Hey Oxy thanks for the response.

I am not actually doing anything off-screen apart from going into the blueprint, which is why this bug is so baffeling. I just tried replictaing the video but now the drawer wont stop behaving in the same manner as the cabinet.

Hi @pezzott1

do you mean that I should move my interact —> linetrace into the First Person Camera and not have one in each actor blueprint I make?

Yes, exactly that.

The player does not need to know what it is interacting with; the trace hit should just hit something and through an interface tell whatever it hit that it was hit… then the magic happens in the BP. Interactible BP should only sit there and wait for their events / functions to be called.

So the player traces and the rest stays in the BP but only executes when it has been informed it was hit.

For example: Unreal Engine 4: Part 4 - Linetrace / Interaction (Interface) - YouTube

1 Like

I’ve now moved the line trace code to the camera and have set up an interaction interface.

However I’m still unsure on how I can weld my drawer BP into the interface.

I have done:


Interface in the camera


interaction interface

Im now trying to figure out how to get the drawer code to activate on interaction.
This is what i’ve tried but its no where near working:

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.

3 Likes

@Rev0verDrive thanks for the response.

This is where I’m up to so far:

However I am still unable to get the drawer ro move, I may have missed something but its not something i can immediatly notice.

You have input interact twice. Top one is using overlapping actors approach. And it’s consuming the input. Take the second one and replace with a generic input for testing. E.g. use the “F” key.

Once it’s working with the F key setup you’ll need to adopt it to the Overlap approach.

edit… Also your line trace END isn’t correct. Forward vector → Vector * float → ADD vector → END

1 Like

@Rev0verDrive The line trace doesnt seem to be having an impacted on the actor blueprints for some reason, will have to sleep on it think.

Works like a charm on my end. Need to copy the line trace code exactly. Yours in the pic provided is wrong.

1 Like

Turns out that for some reason there are two third person character pawns and I had the wrong one selected, so now its working a lot closer to expected. I have created a functioning door but am still trying to get this drawer situation sorted.

Thanks for the help, have learnt a lot from you and this thread so far.

Sorry about only getting you half the answer and I hope it’s working by now but if not… The instance editable variable “Static Mesh Ref” might need to be changed to the same class as your dresser\cupboard actor.

After the change, the bp may compile with errors about the “Static Mesh Ref” not working with your current getRelativeLocation nodes, but that’s only because actors and primitives have different “get” transform nodes. So you’d just have to drag the wire and search for getRelativeLocation again.

I’ll come back with annotated images at end of day after work. This is just a part of my morning routine.


ReVOverDrive has basically given you all you need.