Interaction System #
We have a couple of core videos about the interaction system. If you would like to know every detail check outthis video:
A quick overview here:
And to show that we made interactions gamepad compatible:
Interaction Trace #
- For every interactable, an interaction trace is used. By default, it should be ignored, and only set it manually to block on each item you want to be able to interact with.
- Please check the config file, you will see it has a specific number assigned. That number is important to keep the default responses set like I did in my demo project. If not, you will need to set them manually again to the right response.
- Please note that it is not required. It just makes it more easy to interact with smaller objects. If you want you can also just use the default visibility channel.


- After you migrated, open the Example map and test if everything works without any problems. Do not continue if it does not.

- If you desire minimal file migration, please only select the actor component that you desire and right click -> Migrate that specific component.
Core Principles of the Interaction System #
- The interaction system works via interfaces.
- You can trigger interactions multiple ways.
- On Overlap
- On Event
- On Interact event instigated input by the player
- It switches player input instigated interactions based on the found interface type.
- You can add any interaction type easily to your liking.

- Player input instigated interactions are done via a trace to check if the traced actor has implemented a Can Interact Interface.

- But the trace will only block on Interaction Channels.
- Every interactable has a “Can Interact Sphere”. It is just a collision box with all channels to ignore, except the interaction one to block.
- It is not required; it only makes it easier to interact with smaller objects. If you want, you can also use the default visibility trace.

- Every actor that has the can interact interface will show an the interact when looking at the targeted actor.

- Every interactable in radius will show a small white dot:

Controls: #
Please note that the Enhanced Input system plugin is used in this project to move the character and handle any input. You can set that up to your own liking. If enhanced input is enabled, all controls will work automatically.
These inputs are for instance being used in the extended movement component. This is the component that handles the movement of the character, but also the looking around. If you don’t want to use the Enhanced input System. You must change all inputs currently implemented.


Use cases #
Setup an input based interactable #
- To setup an input based interactable on any actor, you need to add the Can Interact interface on the actor.
- Secondary, you need to setup the interact type interface. I’ve have two presets: Grab and Interact. The interact interface will be the most common.

- After have setup the interact interface, you can call the event and implement any code you like

- Change the return value of the can interact function to true

- Change the should server control interact based on what you want. If you’d want to create a UI element, you don’t want to handle the interaction on server.

- Change the interact text to your liking in the get interact function of the interface

- You can also change the relative location if you like

- And a interact animation

- And sound:

- Sometimes you will want the Can interact to trigger less precise then looking specifically to a mesh. If you use the visibility trace you will need to look at the mesh very specifically. This can be hard to trigger. If you want it easier to get an interaction going, add a CanInteractSphere.
- It is just a collision box with all collisions ignored, and the interaction trace blocked.

