Easy Interaction System
Add interactions to any actor in 2 minutes. Two components, zero Blueprint wiring, full multiplayer support.
📦 Installation
Download & Extract
After purchasing, download the ZIP file for your engine version. Right-click → Extract All.
Copy to Plugins Folder
Put the EasyInteractionSystem folder into your project's Plugins folder.
Engine/Plugins or inside Content!Open Project & Compile
Double-click your .uproject file. If asked to rebuild, click Yes. Wait 1-3 minutes.
Verify
Create any Actor Blueprint, click Add Component, and search for:
Interactable Component(goes on objects)Interaction Component(goes on player)
🚀 Quick Start (5 Minutes)
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.
IA_Interact, assign it in the Details panel under Interaction | Input.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.
Configure the Interactable
Select the Interactable Component in your Blueprint. In the Details panel:
| Setting | Set To |
|---|---|
| Interactable Type | Pickup |
| Interaction Name | Health Potion |
The Interaction Verb auto-fills to "Pick Up" based on the type you chose.
Add Logic with Events
Still in your BP_HealthPotion Blueprint:
- Select the Interactable Component
- In Details panel, scroll to Events
- Click the + next to
On Interacted - This creates an Event node in your Event Graph
- From that event, call Destroy Pickup on the Interactable Component
On Interacted event gives you the Interactor pin (the player who pressed E). Use it to add health, give items, play sounds, etc.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
🖥️ HUD Setup
The plugin includes a built-in Canvas prompt (the "[E] Pick Up" text you see on screen). To enable it:
Set the HUD Class
Open your GameMode Blueprint (or create one).
In the Details panel, find HUD Class and set it to InteractionHUD.
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.
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):
| Setting | What It Does |
|---|---|
| Prompt Position | Top / Center / Bottom / Above Object |
| Prompt Scale | Size of the prompt (0.5 - 3.0) |
| Fade Speed | How fast prompt fades in/out |
| Background Color | Prompt background |
| Text Color | Verb and name text |
| Key Border Color | The [E] key box color |
| Frame Style | None / Thin / Rounded / Solid |
| Key Button Style | Bordered / 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.
| Type | Default Verb | Default Mode | Multi-Use | Best For |
|---|---|---|---|---|
| Pickup | Pick Up | Instant | No | Items, weapons, ammo |
| Collectable | Collect | Instant | No | Coins, notes, keys |
| Switch | Activate / Deactivate | Toggle | Yes | Levers, buttons, power |
| Door | Open / Close | Toggle | Yes | Doors, gates, hatches |
| Container | Open | Instant | No | Chests, crates, lockers |
| Custom | (empty) | Instant | Yes | Anything you want! |
⚡ 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.
| Parameter | Default | What It Does |
|---|---|---|
| Angle | 90 | How far the door opens (degrees) |
| Speed | 2.0 | Animation speed (higher = faster) |
| Toward Player | true | Door 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.
🔒 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:
| Field | What It Does |
|---|---|
| Condition Tag | The Actor Tag the player must have (e.g. HasKeycard) |
| Fail Message | Text shown when condition fails (e.g. "Requires Keycard") |
| Invert Condition | If true, player must NOT have the tag |
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
| Event | When It Fires | Parameters |
|---|---|---|
| On Interacted | Interaction completed successfully | Interactor (Actor) |
| On Toggled | Toggle state changed | Interactor, New State (bool) |
| On Hold Progress | Every tick during hold | Interactor, Progress (0-1) |
| On Hover Begin | Player looks at object | Interactor |
| On Hover End | Player looks away | Interactor |
| On Interaction Failed | Locked or condition not met | Interactor, Reason (Text) |
| On Interaction Enabled | Interaction turned on | - |
| On Interaction Disabled | Interaction turned off | - |
Interaction Component Events (on Player)
| Event | When It Fires | Parameters |
|---|---|---|
| On Interactable Found | Player looks at an interactable | Interactable Component |
| On Interactable Lost | Player looks away | - |
| On Interaction Started | Player presses E | Interactable Component |
| On Interaction Completed | Interaction finished | Interactable Component |
🎨 Prompt Customisation
Each interactable can override the global prompt style:
| Setting (on Interactable) | What It Does |
|---|---|
| Prompt Mode | Built-in / Custom Widget / None |
| Override Prompt Style | Enable per-object color overrides |
| Override Key Display Text | Show different key text (e.g. "F" instead of "E") |
| Override Text Color | Custom text color for this object only |
| Override Key Border Color | Custom key box color |
| Prompt Icon | Texture2D icon shown next to the name |
🌐 Multiplayer
Here's what happens automatically:
| Feature | How It Works |
|---|---|
| Interaction requests | Routed via Server RPC with anti-cheat validation |
| State (enabled, toggled, locked, collected) | Replicated to all clients |
| Door/Container animations | Multicast RPC - all players see them |
| Sound & VFX | Multicast - all players hear/see them |
| Hold progress | Server-authoritative, replicated to clients |
| Hover/Highlight | Local per-client (only you see your highlight) |
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
| Function | What It Does |
|---|---|
| Try Interact | Trigger interaction (called automatically by the system) |
| Set Interaction Enabled | Enable/disable this interactable |
| Set Prompt Text | Change verb and name at runtime |
| Get Hold Progress | Returns 0-1 hold fill amount |
| Cancel Hold | Cancel active hold interaction |
| Rotate Door | Animate door rotation open/close |
| Slide Door | Animate door sliding open/close |
| Close Door | Return door to original position |
| Set Locked | Lock/unlock with optional message |
| Destroy Pickup | Disable + destroy actor (with optional delay) |
| Disable And Hide | Disable + hide actor (doesn't destroy) |
| Mark As Collected | Flag as collected + disable |
| Set Collected Visual | Dim the object visually |
| Toggle Switch | Flip toggle state + fire events |
| Activate Linked Actors | Call Activate on all Linked Actors |
| Set Switch State | Set toggle to specific true/false |
| Animate Lid | Open a container lid component |
| Close Lid | Close the lid back |
| Mark As Opened | Flag container as opened + disable |
| Play Interaction Sound | Play a sound at the object (replicated) |
| Spawn Interaction VFX | Spawn Niagara VFX at the object (replicated) |
| Reset Interaction | Reset everything to initial state |
| Change Interactable Type | Switch type at runtime |
Interaction Component (Player)
| Function | What It Does |
|---|---|
| Get Current Interactable | Returns what the player is looking at |
| Is Interacting | True if currently in a hold interaction |
| Try Interact | Manually trigger interaction (usually auto-bound to E) |
| Stop Interact | Cancel current interaction |
🔧 Troubleshooting
Nothing happens when I press E
- Is Interaction Component on your player character?
- Is Interactable Component on the object?
- Does the object have collision? (trace needs to hit something)
- Is the object within Trace Distance (default 300)?
- Is bIsEnabled set to true on the Interactable?
- Enable Show Debug Trace on the Interaction Component to see the ray
Prompt not showing on screen
- Did you set HUD Class = InteractionHUD in your GameMode?
- Is Show Prompt enabled on the Interaction Component?
- Is Prompt Mode set to
Built-inon the Interactable? - Is your GameMode actually active in World Settings?
Object highlights but nothing else works
- The trace is hitting the object (highlight = hover detected)
- Check if
On Interactedevent is connected in your Blueprint - Make sure the Interactable isn't locked (
Set Locked = false) - Check if
bCanInteractMultipleTimesis set correctly
Door doesn't animate
- Are you calling Rotate Door or Slide Door from the
On Interactedevent? - Make sure the door's root component has Mobility = Movable
- The door actor's pivot point should be at the hinge, not the center
Multiplayer: interaction works for host but not client
- Make sure the interactable actor has Replicates = true (the plugin auto-enables this, but double check)
- Are you calling gameplay functions from the
On Interactedevent? (This runs on server, which is correct) - Don't call
RotateDoor/SetLockedetc. from client-only code
Compilation errors after installing
- Make sure you're using UE 5.4 or newer
- Make sure the Niagara plugin is enabled (Edit → Plugins → Niagara)
- Delete
Binaries,Intermediate, andSavedfolders, then rebuild - Right-click
.uproject→ Generate Visual Studio project files
❓ FAQ
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.💬 Support
support@adrenalinegames.pl
Response within 48 hours