{"id":16209899,"url":"https://github.com/jdsherbert/unreal-engine-interaction-system","last_synced_at":"2025-04-07T21:17:27.436Z","repository":{"id":215651165,"uuid":"739462885","full_name":"JDSherbert/Unreal-Engine-Interaction-System","owner":"JDSherbert","description":"Simple implementation of an Interaction System for Unreal Engine. Utilises two components that communicate with each other through an interface.","archived":false,"fork":false,"pushed_at":"2024-01-09T00:09:24.000Z","size":35,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-13T22:38:17.133Z","etag":null,"topics":["cpp","unreal","unreal-engine","unreal-engine-4","unreal-engine-5","unrealengine"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JDSherbert.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-05T16:17:04.000Z","updated_at":"2024-02-26T10:10:26.000Z","dependencies_parsed_at":"2024-01-09T02:28:13.892Z","dependency_job_id":null,"html_url":"https://github.com/JDSherbert/Unreal-Engine-Interaction-System","commit_stats":{"total_commits":16,"total_committers":1,"mean_commits":16.0,"dds":0.0,"last_synced_commit":"bd283b8823078fb5c52977b6a7a74178216db201"},"previous_names":["jdsherbert/unreal-engine-networked-interaction-system"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JDSherbert%2FUnreal-Engine-Interaction-System","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JDSherbert%2FUnreal-Engine-Interaction-System/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JDSherbert%2FUnreal-Engine-Interaction-System/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JDSherbert%2FUnreal-Engine-Interaction-System/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JDSherbert","download_url":"https://codeload.github.com/JDSherbert/Unreal-Engine-Interaction-System/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247730069,"owners_count":20986404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","unreal","unreal-engine","unreal-engine-4","unreal-engine-5","unrealengine"],"created_at":"2024-10-10T10:33:50.812Z","updated_at":"2025-04-07T21:17:27.408Z","avatar_url":"https://github.com/JDSherbert.png","language":"C++","readme":"![image](https://github.com/JDSherbert/Unreal-Engine-Interaction-System/assets/43964243/1f3c86cb-4b3e-4d19-a609-3716d9c0d247)\n\n# Unreal Engine Interaction System\n\n\u003c!-- Header Start --\u003e\n\u003ca href = \"https://docs.unrealengine.com/5.3/en-US/\"\u003e \u003cimg height=\"40\" img width=\"40\" src=\"https://cdn.simpleicons.org/unrealengine/white\"\u003e \u003c/a\u003e \n\u003ca href = \"https://learn.microsoft.com/en-us/cpp/cpp-language\"\u003e \u003cimg height=\"40\" img width=\"40\" src=\"https://cdn.simpleicons.org/c++\"\u003e \u003c/a\u003e\n\u003cimg align=\"right\" alt=\"Stars Badge\" src=\"https://img.shields.io/github/stars/jdsherbert/Unreal-Engine-Interaction-System?label=%E2%AD%90\"/\u003e\n\u003cimg align=\"right\" alt=\"Forks Badge\" src=\"https://img.shields.io/github/forks/jdsherbert/Unreal-Engine-Interaction-System?label=%F0%9F%8D%B4\"/\u003e\n\u003cimg align=\"right\" alt=\"Watchers Badge\" src=\"https://img.shields.io/github/watchers/jdsherbert/Unreal-Engine-Interaction-System?label=%F0%9F%91%81%EF%B8%8F\"/\u003e\n\u003cimg align=\"right\" alt=\"Issues Badge\" src=\"https://img.shields.io/github/issues/jdsherbert/Unreal-Engine-Interaction-System?label=%E2%9A%A0%EF%B8%8F\"/\u003e\n\u003cimg align=\"right\" src=\"https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2FJDSherbert%2FUnreal-Engine-Interaction-System%2Fhit-counter%2FREADME\u0026count_bg=%2379C83D\u0026title_bg=%23555555\u0026labelColor=0E1128\u0026title=🔍\u0026style=for-the-badge\"\u003e\n\u003c!-- Header End --\u003e \n\n-----------------------------------------------------------------------\n\n\u003ca href=\"https://docs.unrealengine.com/5.3/en-US/\"\u003e \n  \u003cimg align=\"left\" alt=\"Unreal Engine Template\" src=\"https://img.shields.io/badge/Unreal%20Engine%20Component-black?style=for-the-badge\u0026logo=unrealengine\u0026logoColor=white\u0026color=black\u0026labelColor=black\"\u003e \u003c/a\u003e\n  \n\u003ca href=\"https://choosealicense.com/licenses/mit/\"\u003e \n  \u003cimg align=\"right\" alt=\"License\" src=\"https://img.shields.io/badge/License%20:%20MIT-black?style=for-the-badge\u0026logo=mit\u0026logoColor=white\u0026color=black\u0026labelColor=black\"\u003e \u003c/a\u003e\n  \n\u003cbr\u003e\u003c/br\u003e\n\n-----------------------------------------------------------------------\n## Overview\nThis interaction system provides a simple and modular solution for handling interactions between an interactor (InteractorComponent) and interactable actors (InteractableComponent) in Unreal Engine. The system facilitates communication between these components through a defined interface, allowing you to easily implement and customize interactions within your projects!\nEvents are also exposed, so you can have unique per object outcomes if you like. It works by raycasting to the hitbox of the actor, and generally works best in a 1st person setup.\n\n### Components\n#### Interactor\nThe Interactor component is responsible for initiating interactions with interactable objects. It is typically attached to the player character, or any other actor that needs interaction capabilities.\n\n##### Usage:\n- Attach to Character: Add the Interactor component to your player character or desired actor.\n- Input Action: Configure an input action for interaction (e.g., \"Interact\"). Bind this action in your player controller or wherever input handling is managed.\n\n#### Interactable\nThe Interactable component represents objects in the world that can be interacted with. It responds to interaction requests from Interactors.\n\n##### Usage:\n- Attach to Actors: Add the Interactable component to any actor you want to make interactable.\n- Implement Interface: Make sure the actor implements the IInteractableInterface interface. This interface defines the methods needed for interaction.\n- Interaction Interface (IInteractableInterface)\n- The interface defines the communication contract between Interactors and Interactables. It includes methods like OnInteract that need to be implemented by Interactable actors.\n\n## Implementation Step\n\n### Attach Components\nAttach the Interactor component to your player character or actor that will perform interactions.\nAttach the Interactable component to any actor you want to make interactable.\n\n### Input Action \nAs we are using the enhanced input system, define an input action for interaction (e.g., \"Interact\").\nAssign the InputAction in the component via the blueprint inspector, or you can use constructor helpers in the code.\n\n### UUserWidgets\nCreate UUserWidgets (UI) for any interactive feedback you want to provide to the player during interactions.\nThese widgets are triggered by the Interactable actors during interaction events.\nYou'll need to make an \"E To Interact\" and \"Cannot Interact\" widget. Assign these in the blueprint too. \n\n#### Implement Interaction\nAs we are using events, you can add your own logic in blueprint (or code!) as required.\n\n-----------------------------------------------------------------------\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdsherbert%2Funreal-engine-interaction-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjdsherbert%2Funreal-engine-interaction-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdsherbert%2Funreal-engine-interaction-system/lists"}