GET STARTEDINTRODUCTION
Introduction
Character Interaction System lets a character use things in the world: doors, gates, levers, buttons, crates, hand scanners, pickups and code locks. You set up an object in the Details panel: the sides it can be used from, the states it has, how the character moves to it and what happens when it is used. The same setup works in single player and online: by default, the server checks every use a client asks for, and the use runs on the user’s machine, on the server and on every client that shows it.
What’s in the box
Section titled “What’s in the box”| System | What it does | Main type |
|---|---|---|
| Character interaction component | Goes on the character: finds the objects in reach, picks the one to use and runs the hold and the use. | UCISCharacterInteractionComponent |
| Interaction object component | Makes an actor usable: the sides it is used from, its state as a gameplay tag, and what each side does in each state. | UCISInteractionObjectComponent |
| Actions | What a use does, such as playing a montage or picking up an item. A finished Action can set the object's next state. | UCISInteractionObjectAction |
| Move handlers | Bring the character into place before or while the Action runs. | UCISInteractionObjectMoveHandler |
| Conditions | Decide whether a character may use an object. The server can check them again before it accepts a use. | UCISInteractionObjectCondition |
| Choosing the object | Tests that score the objects in reach, so the character uses the best one. | UCISDetermineUseObjectTest |
| Data objects | Link one character to one object it can use: the side it uses and Blueprint events at each stage of a use. | UCISInteractionDataObject |
| Widgets and icons | Show an object's icon on screen with the widget component and the plugin's widgets. | UCISWidgetComponent |
| Component references | Name a component of an actor, and a socket, in the Details panel; the plugin finds it at run time. | FCISSceneComponentsOnActor |
| Animation helpers | Attach a mesh to a socket for the length of an anim notify, and move a character with root motion. | UCISAnimNotifyStateAttachMesh |
| Multiplayer | Where Actions and MoveHandlers run, how the server checks a use, and the project's network settings. | ECISNetExecutionPolicy |
How it fits into your game
Section titled “How it fits into your game”- Add
UCISCharacterInteractionComponentto your character. It tracks the interaction objects near the character through trigger components and picks the one to use with tests such asUCISDetermineUseObjectTest. CallUCISCharacterInteractionComponent::TryUseObjectwhen the player presses the use button: the use starts once the button has been held for the use time, set on the character or per object. - Add
UCISInteractionObjectComponentto any actor that can be used. It holds the sides the object can be used from. Each side has an angle range, a MoveHandler that brings the character into place, and an Action for each state of the object; the state is a gameplay tag.
The demo in /CharacterInteractionSystem/Demo has a character and ready objects built this way.
Modules
Section titled “Modules”| Module | Type | What it holds |
|---|---|---|
CharacterInteractionSystem | Runtime | Everything a game uses: the components, Actions, MoveHandlers, Conditions, tests and settings. |
CharacterInteractionSystemEditor | Editor | The Details panel pickers for component references: a component of the actor and its socket. |
- Installation: engine version, platforms and how to add the plugin to a project.
- Upgrading from 1.x: what changes for a project made with 1.x.