So I created a blueprint that allows the player to swing on a rope by pressing E when they are in the collision box of the actor. However, it only really worked in the level blueprint and not in the actor’s blueprint, but I noticed one thing about the level blueprint. If there are any copies of the actor the blueprint will not run due to it being able to be connected to one version of the actor inside the level (so for example the blueprint works for “Rope” but it doesn’t work for “Rope_2” as they have different IDs) so I want to ask if there is a way of making the level blueprint work on all copies of the actor? Like telling it universally to work with the blueprint actor class instead?
Hi @VulpesUmbra My recommendation is not to use Level Blueprints, but, compartmentalize that logic in a Actor or Actor Component Blueprint that can be placed in any Level.
This logic should be in your rope blueprint. What you want is the input to start in your character blueprint then “interface” to the rope blueprint to fire the custom event.
@NotSoAccurateNo1 wdym by interfacing to the rope blueprint, like casting to it or?
Yes, or by using a blueprint interface: Blueprint Interface | Unreal Engine Documentation
Level Blueprints are good for getting some ideas down quick to test with, but really shouldn’t be used extensively for game play logic.
Like those above me advised, this kind of stuff should go into a bespoke blueprint that you place into the level.
So the actor which swings on the rope should be handling the input here and when it’s overlapping with the rope actor it should handle its own launching behaviour. That way it applies to all actors of this class which overlap with a rope.
You can create an interface that you place on the rope actor then just check to see if the overlapped actor implements that interface, then you’ll know it’s a rope. It’s super fast that way.
Mathew Wadstein does a pretty good job at explaining interfaces.WTF Is? Blueprint Interface - YouTube
In this case he’s using an interface to add and remove HP from his character. You should be able to use an interface to pass an actor reference to your character, such that your Interact input event will interface back to your rope blueprint. Where the rope blueprint will fire the event that launches the character.
But as [USER=“13335”]Jared Therriault[/USER] suggested the ideal end result is the Interact input (in your character blueprint) checks for overlapping actors then interfaces to them.
getOverlappingActors is here Get Overlapping Actors | Unreal Engine Documentation
there is also a getOverlappingComponents node