Troubleshooting

Solutions to common problems and issues.


Widget Issues

Widget doesn’t appear

Symptoms: Looking at object, but no widget visible

Solutions:

  1. Check Widget Component Settings:

    ☑️ Space = World (NOT Screen!)
    ☑️ Visible = False (starts hidden, auto-shown)
    ☑️ Widget Class is assigned
    
  2. Check Widget Blueprint:

    ☑️ Parent Class = InteractionWidget
    ☑️ Has valid design (not empty)
    ☑️ Text elements marked "Is Variable"
    
  3. Check InteractionData:

    ☑️ InteractionName is set (not empty)
    ☑️ Component is enabled
    
  4. Force Test:

    // In object Event Graph
    Event BeginPlay
    └─ Widget Component → Set Visibility (True)
    

    If widget shows now → System works, check focus logic


Widget shows but doesn’t update

Symptoms: Widget visible but shows default text

Cause: Events not implemented or not firing

Solutions:

  1. Check Event Implementation:

    // In Widget Graph
    Event OnInteractionAvailable ← Must exist!
    └─ Break FInteractionData
       └─ Set Text (Text_ActionName)
    
  2. Verify Widget receives data:

    Event OnInteractionAvailable
    └─ Print String (InteractionData.InteractionName)
    

    If prints → Events work, check text binding

  3. Check Variable Names:

    • Ensure Text_ActionName (or your name) is marked “Is Variable”
    • Variable name in Graph must match name in Designer

Widget appears at wrong location

Solution: Position Widget Component in object

1. Select Widget Component in Components panel
2. Transform → Location: Adjust X/Y/Z
   Example: Z = 100 (100cm above object)

Widget too big/small

Solution: Adjust Draw Size

Widget Component:
└─ Draw Size: 400 x 150 (default)

   Smaller: 200 x 75
   Larger: 600 x 200

Interaction Issues

OnInteract doesn’t fire

Symptoms: Looking at object, pressing key, nothing happens

Solutions:

  1. Check Collision:

    Object's Mesh:
    ├─ Collision Enabled: Query Only or Collision Enabled
    └─ Object Type: WorldStatic or WorldDynamic
    
    Good presets: BlockAll, BlockAllDynamic
    
  2. Check Component State:

    InteractableComponent:
    ├─ bIsEnabled = True ✓
    ├─ bIsOnCooldown = False ✓
    └─ InteractionData is filled
    
  3. Check Detection:

    InteractionComponent (Player):
    ├─ Show Debug = True
    └─ Look at object → See green line?
       ├─ Yes → Detection works, check interaction
       └─ No → Detection issue (see below)
    
  4. Test with Print:

    Event OnInteract
    └─ Print String ("INTERACTION TRIGGERED!")
    

Can detect object but can’t interact

Symptoms: Debug line green, widget shows, but pressing key does nothing

Causes:

  • Input not bound
  • Wrong input state (need Press + Release)
  • Cooldown active

Solutions:

  1. Verify Input Binding:

    Input Action "E" (Pressed)
    └─ InteractionComponent → Start Interaction ✓
    
    Input Action "E" (Released) ← Need this for Hold!
    └─ InteractionComponent → Stop Interaction ✓
    
  2. Check in Player Character:

    • Input binding is in Player/Character Blueprint
    • InteractionComponent is on Player/Character
    • Not on the Interactable Object!
  3. Reset Cooldown:

    InteractableComponent → Reset Cooldown
    

Object detected from too far away

Solution: Reduce Interaction Distance

InteractionComponent:
└─ Interaction Distance = 500 → 300

Can’t interact when very close

Cause: Minimum distance filtering

Solution:

InteractionComponent:
├─ bUseDistanceFiltering = False
or
└─ MinInteractionDistance = 0

Detection Issues

Nothing gets detected

Symptoms: Debug line always red, never green

Solutions:

  1. Check InteractionComponent:

    ☑️ On Player/Character (not on objects!)
    ☑️ Detection Distance > 0 (e.g., 500)
    ☑️ Show Debug = True (for testing)
    
  2. Check Object:

    ☑️ Has InteractableComponent
    ☑️ Has Collision enabled
    ☑️ Not too far away
    
  3. Try Different Method:

    Change Detection Method to Overlap
    Increase Interaction Distance to 1000
    Disable all filtering temporarily
    
  4. Verify Trace Channel:

    • Default uses ECC_Visibility
    • Ensure objects block this channel

Wrong object selected

Symptoms: Multiple objects, but wrong one is focused

Solution: Use Priority System

Important Object:
└─ Priority = 10

Less Important:
└─ Priority = 0

System auto-selects highest priority

Objects behind walls detected

Cause: Trace goes through walls

Solutions:

  1. Ensure walls have collision:

    Wall:
    └─ Collision: BlockAll
    
  2. Use Line Trace method:

    • More accurate than Overlap
    • Blocked by obstacles

Multiplayer Issues

Interaction works in singleplayer but not multiplayer

Solutions:

  1. Verify Replication:

    InteractionComponent:
    └─ Replication: ✓ Replicates (default)
    
    InteractableComponent:
    └─ Replication: ✓ Replicates (default)
    
  2. Check Authority:

    Event OnInteract
    ├─ Branch: Has Authority?
    │  ├─ True → "SERVER"
    │  └─ False → "CLIENT"
    

    Should print “SERVER” (interactions run on server)

  3. Test Distance on Server:

    • Server validates distance
    • Client too far = rejected
    • Use Debug to verify

Client sees other client’s interactions wrong

Cause: State not replicated

Solution: Use Replicated variables

UPROPERTY(Replicated)
bool bIsActivated;

Lag causes missed interactions

This is expected! Server authority means validation delay.

Mitigation:

  • Provide immediate visual feedback on client
  • Show “processing” state during server round-trip
  • Design interactions to be forgiving (not frame-perfect)

Performance Issues

Low FPS when many interactables

Solutions:

  1. Increase Detection Interval:

    InteractionComponent:
    └─ Detection Interval = 0.1 → 0.2 or 0.3
    
  2. Use Distance Culling:

    // On Interactable objects
    Event Tick (every 2 seconds)
    ├─ Distance to Player > 2000?
    │  ├─ True → SetEnabled (False)
    │  └─ False → SetEnabled (True)
    
  3. Disable Debug:

    Show Debug = False ✓
    
  4. Optimize Detection Method:

    • Line Trace: Best performance
    • Sphere Trace: Good
    • Overlap: Fair (expensive with many objects)
    • Cone: Good

Widget Visualization Issues

Widget appears behind objects

Solution: Adjust render order

Widget Component:
└─ Translucency Sort Priority = 100

Higher values render later (on top)


Widget pixelated/blurry

Solution: Increase Draw Size

Widget Component:
└─ Draw Size = 800 x 300 (double it)

Or increase widget texture quality in widget settings


Widget doesn’t face camera

Solution: Enable billboard effect

Widget Component:
└─ Transform → Absolute Rotation = ✓ True

Or implement custom rotation:

Event Tick
├─ Get Player Camera Location
├─ Find Look at Rotation
└─ Set World Rotation (Widget Component)

Build/Compilation Issues

“Plugin requires rebuild”

Solution:

  1. Close Unreal Editor
  2. Delete these folders:
    • ProjectRoot/Binaries/
    • ProjectRoot/Intermediate/
    • ProjectRoot/Plugins/OwnInteract/Binaries/
    • ProjectRoot/Plugins/OwnInteract/Intermediate/
  3. Right-click .uproject → Generate VS project files
  4. Reopen project (will rebuild)

Build errors with InteractionWidget

Cause: Widget doesn’t inherit from correct class

Solution:

  1. Open Widget Blueprint
  2. File → Class Settings
  3. Parent Class → InteractionWidget
  4. If not in list → Plugin not loaded correctly

Still Having Issues?

Debug Checklist

Run through this checklist systematically:

Player Setup:

  • [ ] InteractionComponent on Character
  • [ ] Input bound to Start/Stop Interaction
  • [ ] Detection Distance > 100
  • [ ] Show Debug enabled

Object Setup:

  • [ ] InteractableComponent present
  • [ ] WidgetComponent present
  • [ ] Collision enabled (BlockAll)
  • [ ] Widget assigned to WidgetComponent
  • [ ] InteractionData filled (ActionName, etc.)

Widget Setup:

  • [ ] Widget inherits from InteractionWidget
  • [ ] Has UI elements (Text, etc.)
  • [ ] Elements marked “Is Variable”
  • [ ] Events implemented (OnInteractionAvailable)
  • [ ] Widget Component Space = World
  • [ ] Widget Component Visible = False

Test:

  • [ ] Green debug line when looking at object?
  • [ ] Widget appears when looking?
  • [ ] Print String in OnInteract fires?

If all checked and still not working:

  • Try with completely fresh test Actor
  • Ensure no other systems interfering
  • Check for errors in Output Log

Get Help

If you’ve tried everything:

  1. Check FAQ for common questions
  2. Verify against Getting Started guide
  3. Contact support via Marketplace

← Back to Index | FAQ →