Screenshots and videos
Price history
Lowest recorded standalone price: $12.99. Recorded observations span to . This is our available history, not a guaranteed all-time low. Bundle package prices are separate.
Standalone price
Last three months, in USD. Bundle prices cover the whole package.
About Snog's Interaction System 2
- Tools, Systems & Learning > Development Tools & Automation
- Art & Visuals > UI & GUI
Snog's Interaction System gives you a polished, production-ready interaction layer you can drop into any Unity project. Whether you're building a first-person adventure, a top-down RPG, or a puzzle game, everything is designed to work immediately and stay out of your way.
Get started in minutes
Add PlayerInteractor to your player, assign an InteractionSettings asset, drop a prefab in your scene, and you're done. The built-in Interactable Scaffolder generates a fully typed C# script and matching prefab — complete with mesh, collider, material, and layer — from a single editor window. No boilerplate, no wiring.
Every interaction type covered
• Door — animated rotation with hinge pivot, open/close toggle, configurable angle and speed.
• Pickup — destroys itself on interact, logs item ID and amount.
• Lever — fires an Animator trigger, tracks on/off state.
• Button — one-shot press with optional audio, stays pressed.
• Readable — displays text on interact, useful for notes and signs.
• Scene Loader — loads a scene by name, single or additive mode.
• Save Point — stub ready to wire into your own save system.
• Custom — blank skeleton you can extend however you need.
Condition system
Gate any interaction behind scene-object conditions with no code required. Add RequiresConditions to your interactable, then add condition components alongside it. All conditions are MonoBehaviour-based so they reference scene objects natively — no ScriptableObject assets to manage.
• GameObjectActiveCondition — passes when a target GameObject is active or inactive.
• ComponentEnabledCondition — passes when a target Behaviour is enabled or disabled.
• InvertCondition — inverts any sibling condition.
Set a Failure Reason on any condition to show contextual text in the prompt when the interaction is blocked (e.g. "The generator must be on first"). Create your own conditions by inheriting InteractionCondition.
Animated HUD prompt
The built-in InteractionPromptUI supports three independently toggleable animations: fade, scale (pop), and slide. All three share a single easing curve so they always move in sync. The prompt automatically cross-fades when the player looks from one interactable to another. Fully replaceable — implement IPromptDisplay on any MonoBehaviour to use your own UI framework.
Press or hold
Set a global press or hold mode in InteractionSettings, then override it per-object. Per-object hold duration override included. Hold progress drives a fill image on the HUD automatically.
C# events for zero-coupling integration
• OnFocusChanged — fires when the player aims at or away from an interactable.
• OnInteracted — fires after each successful interaction.
• OnInteractionFailed — fires when the player presses the key while an object is blocked. Use this for locked-door audio, tutorial nudges, or UI feedback.
Interaction lock
Call SetInteractionLocked(true) at the start of an animation and SetInteractionLocked(false) when it finishes to prevent re-triggering mid-playback. The Live Status panel in the inspector shows the lock state in real time during Play Mode.
One-click Quick Actions
The interactable inspector includes one-click buttons that add a response component and wire it to OnInteract automatically: Play Audio, Animator Trigger, Set Active, Toggle Active, Enable/Disable Component, Toggle Component, Debug Log, Invoke Event, Reload Scene, Quit Application.
Fully extensible
• IInteractionDetector — swap the detection strategy. Built-in options: forward SphereCast and ProximityDetector (nearest in radius). Implement your own for VR, click-to-interact, or anything else.
• IPromptDisplay — replace the HUD with any UI framework. World-space prompts, controller glyphs, whatever you need.
• ICustomPrompt — supply rich prompt data per-object: icons, unavailable-state labels, full-sentence prompts.
New Input System + Legacy Input
Assign an InputActionReference for full New Input System support, or leave it empty to use the KeyCode fallback in InteractionSettings. The interact key is exposed directly on the PlayerInteractor inspector so you never have to navigate to a settings asset just to change a key binding.
Included
• PlayerInteractor — main driver, attach to your player.
• InteractionPromptUI — built-in HUD with fade, scale, and slide animations.
• InteractionSettings — ScriptableObject, one asset per project.
• BaseInteractable — abstract convenience base class.
• Interactable Scaffolder — editor window for code and prefab generation.
• RaycastDetector + ProximityDetector — two built-in detection strategies.
• 3 built-in conditions + condition base class.
• 11 Quick Action components.
• InteractionDebugOverlay — runtime HUD for debugging (F9 toggle, safe in builds).
• KeycardDoorInteractable sample — demonstrates ICustomPrompt, icons, and unavailable-state labels.
• Full XML documentation on all public API.
Get started in minutes
Add PlayerInteractor to your player, assign an InteractionSettings asset, drop a prefab in your scene, and you're done. The built-in Interactable Scaffolder generates a fully typed C# script and matching prefab — complete with mesh, collider, material, and layer — from a single editor window. No boilerplate, no wiring.
Every interaction type covered
• Door — animated rotation with hinge pivot, open/close toggle, configurable angle and speed.
• Pickup — destroys itself on interact, logs item ID and amount.
• Lever — fires an Animator trigger, tracks on/off state.
• Button — one-shot press with optional audio, stays pressed.
• Readable — displays text on interact, useful for notes and signs.
• Scene Loader — loads a scene by name, single or additive mode.
• Save Point — stub ready to wire into your own save system.
• Custom — blank skeleton you can extend however you need.
Condition system
Gate any interaction behind scene-object conditions with no code required. Add RequiresConditions to your interactable, then add condition components alongside it. All conditions are MonoBehaviour-based so they reference scene objects natively — no ScriptableObject assets to manage.
• GameObjectActiveCondition — passes when a target GameObject is active or inactive.
• ComponentEnabledCondition — passes when a target Behaviour is enabled or disabled.
• InvertCondition — inverts any sibling condition.
Set a Failure Reason on any condition to show contextual text in the prompt when the interaction is blocked (e.g. "The generator must be on first"). Create your own conditions by inheriting InteractionCondition.
Animated HUD prompt
The built-in InteractionPromptUI supports three independently toggleable animations: fade, scale (pop), and slide. All three share a single easing curve so they always move in sync. The prompt automatically cross-fades when the player looks from one interactable to another. Fully replaceable — implement IPromptDisplay on any MonoBehaviour to use your own UI framework.
Press or hold
Set a global press or hold mode in InteractionSettings, then override it per-object. Per-object hold duration override included. Hold progress drives a fill image on the HUD automatically.
C# events for zero-coupling integration
• OnFocusChanged — fires when the player aims at or away from an interactable.
• OnInteracted — fires after each successful interaction.
• OnInteractionFailed — fires when the player presses the key while an object is blocked. Use this for locked-door audio, tutorial nudges, or UI feedback.
Interaction lock
Call SetInteractionLocked(true) at the start of an animation and SetInteractionLocked(false) when it finishes to prevent re-triggering mid-playback. The Live Status panel in the inspector shows the lock state in real time during Play Mode.
One-click Quick Actions
The interactable inspector includes one-click buttons that add a response component and wire it to OnInteract automatically: Play Audio, Animator Trigger, Set Active, Toggle Active, Enable/Disable Component, Toggle Component, Debug Log, Invoke Event, Reload Scene, Quit Application.
Fully extensible
• IInteractionDetector — swap the detection strategy. Built-in options: forward SphereCast and ProximityDetector (nearest in radius). Implement your own for VR, click-to-interact, or anything else.
• IPromptDisplay — replace the HUD with any UI framework. World-space prompts, controller glyphs, whatever you need.
• ICustomPrompt — supply rich prompt data per-object: icons, unavailable-state labels, full-sentence prompts.
New Input System + Legacy Input
Assign an InputActionReference for full New Input System support, or leave it empty to use the KeyCode fallback in InteractionSettings. The interact key is exposed directly on the PlayerInteractor inspector so you never have to navigate to a settings asset just to change a key binding.
Included
• PlayerInteractor — main driver, attach to your player.
• InteractionPromptUI — built-in HUD with fade, scale, and slide animations.
• InteractionSettings — ScriptableObject, one asset per project.
• BaseInteractable — abstract convenience base class.
• Interactable Scaffolder — editor window for code and prefab generation.
• RaycastDetector + ProximityDetector — two built-in detection strategies.
• 3 built-in conditions + condition base class.
• 11 Quick Action components.
• InteractionDebugOverlay — runtime HUD for debugging (F9 toggle, safe in builds).
• KeycardDoorInteractable sample — demonstrates ICustomPrompt, icons, and unavailable-state labels.
• Full XML documentation on all public API.