Easy Interaction System

Add interactions to any actor in 2 minutes. Two components, zero Blueprint wiring, full multiplayer support.

v1.0.0 UE 5.4 - 5.7 100% C++ Multiplayer Ready

📦 Installation

💡 Before you start: Make sure you have Unreal Engine 5.4 or newer. This plugin works with UE 5.4, 5.5, 5.6, and 5.7.
1

Download & Extract

After purchasing, download the ZIP file for your engine version. Right-click → Extract All.

⚠️ Do NOT open files inside the ZIP directly. Always extract first!
2

Copy to Plugins Folder

Put the EasyInteractionSystem folder into your project's Plugins folder.

📁 YourProject/ ├── 📁 Content/ ├── 📁 Config/ ├── 📁 Plugins/ ← Create this if missing │ └── 📁 EasyInteractionSystem/ │ ├── 📁 Source/ │ ├── 📁 Content/ │ └── 📄 EasyInteractionSystem.uplugin └── 📄 YourProject.uproject
🚫 WRONG: Don't put it in Engine/Plugins or inside Content!
3

Open Project & Compile

Double-click your .uproject file. If asked to rebuild, click Yes. Wait 1-3 minutes.

4

Verify

Create any Actor Blueprint, click Add Component, and search for:

  • Interactable Component (goes on objects)
  • Interaction Component (goes on player)
🎉 If you see both components, you're ready!

🚀 Quick Start (5 Minutes)

🎯 Goal: You'll have a working pickup item with an on-screen prompt in under 5 minutes. No C++ needed.
1

Add Interaction Component to Your Player

Open your Player Character Blueprint (e.g. BP_ThirdPersonCharacter).

Click Add Component → search Interaction Component → add it.

That's it for the player. Input is auto-bound to the E key. No wiring needed.

💡 The component auto-creates an Enhanced Input Action and Mapping Context at runtime. If you already have your own IA_Interact, assign it in the Details panel under Interaction | Input.
2

Create an Interactable Object

Create a new Actor Blueprint (e.g. BP_HealthPotion).

Add a Static Mesh (any mesh, e.g. a cube or sphere).

Click Add Component → search Interactable Component → add it.

3

Configure the Interactable

Select the Interactable Component in your Blueprint. In the Details panel:

SettingSet To
Interactable TypePickup
Interaction NameHealth Potion

The Interaction Verb auto-fills to "Pick Up" based on the type you chose.

4

Add Logic with Events

Still in your BP_HealthPotion Blueprint:

  1. Select the Interactable Component
  2. In Details panel, scroll to Events
  3. Click the + next to On Interacted
  4. This creates an Event node in your Event Graph
  5. From that event, call Destroy Pickup on the Interactable Component
💡 The On Interacted event gives you the Interactor pin (the player who pressed E). Use it to add health, give items, play sounds, etc.
5

Place in Level & Play!

Drag BP_HealthPotion into your level. Press Play.

Walk up to it and press E. You should see:

  • ✅ Custom depth highlight when you look at it
  • ✅ On-screen prompt: [E] Pick Up Health Potion
  • ✅ Object destroyed when you press E
🎉 Done! You have a working interaction system. Read on to learn about doors, switches, hold interactions, and more.

🖥️ HUD Setup

The plugin includes a built-in Canvas prompt (the "[E] Pick Up" text you see on screen). To enable it:

1

Set the HUD Class

Open your GameMode Blueprint (or create one).

In the Details panel, find HUD Class and set it to InteractionHUD.

2

Make Sure Your GameMode is Active

Go to World Settings (in your level) → GameMode Override → select your GameMode.

Or set it as default in Project Settings → Maps & Modes → Default GameMode.

💡 Already have a custom HUD? If your game already uses a custom HUD class, you can set Prompt Mode = Custom Widget on any Interactable Component and handle the UI yourself. Or set Prompt Mode = None to disable prompts entirely.

You can customize every aspect of the prompt on the Interaction Component (on your player):

SettingWhat It Does
Prompt PositionTop / Center / Bottom / Above Object
Prompt ScaleSize of the prompt (0.5 - 3.0)
Fade SpeedHow fast prompt fades in/out
Background ColorPrompt background
Text ColorVerb and name text
Key Border ColorThe [E] key box color
Frame StyleNone / Thin / Rounded / Solid
Key Button StyleBordered / Filled / Minimal / Circle

📋 Interaction Types

The Interactable Type is a preset that auto-fills the verb and mode. It does NOT limit what you can do; it just saves time.

TypeDefault VerbDefault ModeMulti-UseBest For
PickupPick UpInstantNoItems, weapons, ammo
CollectableCollectInstantNoCoins, notes, keys
SwitchActivate / DeactivateToggleYesLevers, buttons, power
DoorOpen / CloseToggleYesDoors, gates, hatches
ContainerOpenInstantNoChests, crates, lockers
Custom(empty)InstantYesAnything you want!
💡 You can always override the verb, mode, and multi-use setting manually after selecting a type. The type is just a convenient starting point.

⚡ Interaction Modes

Instant

Player presses E → interaction fires immediately. Use for: pickups, buttons, simple interactions.

Hold

Player holds E for a duration → progress bar fills → interaction fires when full. Use for: reviving, hacking, planting bombs.

Set Hold Duration (seconds) in the Interactable Component. The HUD automatically shows a progress bar.

Toggle

Player presses E → state flips ON/OFF. Verb auto-swaps (e.g. "Open" becomes "Close"). Use for: doors, switches, lights.

Enable Auto Swap Verb and set the Toggled Verb to get automatic text switching.

🚪 Doors & Containers

The plugin includes built-in door and container animation nodes. No Timeline or animation Blueprint needed!

Rotating Door

In your door actor's On Interacted event, call Rotate Door on the Interactable Component.

ParameterDefaultWhat It Does
Angle90How far the door opens (degrees)
Speed2.0Animation speed (higher = faster)
Toward PlayertrueDoor opens away from the player

Sliding Door

Call Slide Door instead. Set the Direction vector and Distance.

Close Door

Call Close Door to return the door to its original position. It automatically knows whether to rotate or slide back.

Container Lid

Call Animate Lid and pass in the lid's Scene Component reference. The lid rotates open. Call Close Lid to close it back.

💡 All animations are replicated in multiplayer! Every player sees the door open/close.

🔒 Conditions & Locks

Lock System

Call Set Locked on the Interactable Component to prevent interaction. When locked, the player sees a "Locked" message (customizable) and the On Interaction Failed event fires.

Tag Conditions

Add entries to the Conditions array in the Interactable Component:

FieldWhat It Does
Condition TagThe Actor Tag the player must have (e.g. HasKeycard)
Fail MessageText shown when condition fails (e.g. "Requires Keycard")
Invert ConditionIf true, player must NOT have the tag
💡 How to add a tag to your player: In your player Blueprint, call Add Tag with the tag name (e.g. HasKeycard) when the player picks up a key.

📡 Events (Delegates)

Bind these in Blueprint to react to interactions. All events fire on the server in multiplayer.

Interactable Component Events

EventWhen It FiresParameters
On InteractedInteraction completed successfullyInteractor (Actor)
On ToggledToggle state changedInteractor, New State (bool)
On Hold ProgressEvery tick during holdInteractor, Progress (0-1)
On Hover BeginPlayer looks at objectInteractor
On Hover EndPlayer looks awayInteractor
On Interaction FailedLocked or condition not metInteractor, Reason (Text)
On Interaction EnabledInteraction turned on-
On Interaction DisabledInteraction turned off-

Interaction Component Events (on Player)

EventWhen It FiresParameters
On Interactable FoundPlayer looks at an interactableInteractable Component
On Interactable LostPlayer looks away-
On Interaction StartedPlayer presses EInteractable Component
On Interaction CompletedInteraction finishedInteractable Component

🎨 Prompt Customisation

Each interactable can override the global prompt style:

Setting (on Interactable)What It Does
Prompt ModeBuilt-in / Custom Widget / None
Override Prompt StyleEnable per-object color overrides
Override Key Display TextShow different key text (e.g. "F" instead of "E")
Override Text ColorCustom text color for this object only
Override Key Border ColorCustom key box color
Prompt IconTexture2D icon shown next to the name

🌐 Multiplayer

Full multiplayer support out of the box. No extra setup required.

Here's what happens automatically:

FeatureHow It Works
Interaction requestsRouted via Server RPC with anti-cheat validation
State (enabled, toggled, locked, collected)Replicated to all clients
Door/Container animationsMulticast RPC - all players see them
Sound & VFXMulticast - all players hear/see them
Hold progressServer-authoritative, replicated to clients
Hover/HighlightLocal per-client (only you see your highlight)
⚠️ Important: All gameplay functions (RotateDoor, ToggleSwitch, SetLocked, etc.) must be called on the server. If you call them from an On Interacted event, they already run on the server. If you call them from custom Blueprint logic, make sure you're on the server (use Has Authority or Switch Has Authority).

📚 All Blueprint Functions

Interactable Component

FunctionWhat It Does
Try InteractTrigger interaction (called automatically by the system)
Set Interaction EnabledEnable/disable this interactable
Set Prompt TextChange verb and name at runtime
Get Hold ProgressReturns 0-1 hold fill amount
Cancel HoldCancel active hold interaction
Rotate DoorAnimate door rotation open/close
Slide DoorAnimate door sliding open/close
Close DoorReturn door to original position
Set LockedLock/unlock with optional message
Destroy PickupDisable + destroy actor (with optional delay)
Disable And HideDisable + hide actor (doesn't destroy)
Mark As CollectedFlag as collected + disable
Set Collected VisualDim the object visually
Toggle SwitchFlip toggle state + fire events
Activate Linked ActorsCall Activate on all Linked Actors
Set Switch StateSet toggle to specific true/false
Animate LidOpen a container lid component
Close LidClose the lid back
Mark As OpenedFlag container as opened + disable
Play Interaction SoundPlay a sound at the object (replicated)
Spawn Interaction VFXSpawn Niagara VFX at the object (replicated)
Reset InteractionReset everything to initial state
Change Interactable TypeSwitch type at runtime

Interaction Component (Player)

FunctionWhat It Does
Get Current InteractableReturns what the player is looking at
Is InteractingTrue if currently in a hold interaction
Try InteractManually trigger interaction (usually auto-bound to E)
Stop InteractCancel current interaction

🔧 Troubleshooting

Nothing happens when I press E
  1. Is Interaction Component on your player character?
  2. Is Interactable Component on the object?
  3. Does the object have collision? (trace needs to hit something)
  4. Is the object within Trace Distance (default 300)?
  5. Is bIsEnabled set to true on the Interactable?
  6. Enable Show Debug Trace on the Interaction Component to see the ray
Prompt not showing on screen
  1. Did you set HUD Class = InteractionHUD in your GameMode?
  2. Is Show Prompt enabled on the Interaction Component?
  3. Is Prompt Mode set to Built-in on the Interactable?
  4. Is your GameMode actually active in World Settings?
Object highlights but nothing else works
  1. The trace is hitting the object (highlight = hover detected)
  2. Check if On Interacted event is connected in your Blueprint
  3. Make sure the Interactable isn't locked (Set Locked = false)
  4. Check if bCanInteractMultipleTimes is set correctly
Door doesn't animate
  1. Are you calling Rotate Door or Slide Door from the On Interacted event?
  2. Make sure the door's root component has Mobility = Movable
  3. The door actor's pivot point should be at the hinge, not the center
Multiplayer: interaction works for host but not client
  1. Make sure the interactable actor has Replicates = true (the plugin auto-enables this, but double check)
  2. Are you calling gameplay functions from the On Interacted event? (This runs on server, which is correct)
  3. Don't call RotateDoor / SetLocked etc. from client-only code
Compilation errors after installing
  1. Make sure you're using UE 5.4 or newer
  2. Make sure the Niagara plugin is enabled (Edit → Plugins → Niagara)
  3. Delete Binaries, Intermediate, and Saved folders, then rebuild
  4. Right-click .uproject → Generate Visual Studio project files

❓ FAQ

Do I need to know C++?
No! Everything can be set up purely in Blueprints. The plugin is written in C++ for performance, but you never need to touch the source code.
Can I use this with First Person AND Third Person?
Yes! The Interaction Component traces from the camera by default, which works for both perspectives. You can also disable "Trace From Camera" and it will trace from the character's forward direction.
Can one object have multiple interaction types?
One Interactable Component = one interaction. If you need multiple interactions on one actor (e.g. "Open" and "Loot"), add two Interactable Components on different child actors, or use the Custom type and handle logic in your Blueprint.
How do I change the interact key from E to something else?
On the Interaction Component (player), change the Interact Key property. Or, assign your own Input Action to the Interact Action slot and bind it however you want in your Input Mapping Context.
Does it work with the IActivatable interface?
Yes! When you call Activate Linked Actors, it calls the Activate function on every actor in the Linked Actors array that implements the IActivatable interface. Implement this interface on your actors (lights, traps, elevators) to make them respond to switches.
Can I modify the source code?
Yes! Full C++ source is included. You can modify anything for your project. You cannot redistribute the source code.

💬 Support

📧 Email

support@adrenalinegames.pl

Response within 48 hours

🌐 Website

adrenalinegames.pl

All plugins & documentation

💡 When reporting issues, include: UE version, steps to reproduce, error messages (screenshots help!), and what you've already tried.