Interactor - Interaction Handler (Advanced AAA Interactions)

Interactor designed to cover all aspects of any kind of interaction, from designing stage in editor to handling complex interactions in runtime. It contains editor tools to simplify process of preparing a fully interactable environment. And in runtime, it handles which player parts are going to interact with which parts of the interacted object, while using it’s own IK to animate player bones.

Comes with InteractorIK but also has one click switch for fully integrated Final IK. You can change between those with a simple click anytime in seconds.

Online Documentation

Asset Store Link

Bookmark the thread if you want to be notified when a new info posted.
Feel free to contribute in the thread or ask questions.

1 Like

Reserved for future updates #1

Reserved for future updates #2

Reserved for future updates #3

2 Likes

Hi, this looks pretty neat - is there an online demo or windows build available?

@razzraziel Is this still active?

I have FinalIK but I find the interactions a bit of a pain to set up. If this is still active, I will definitely pick this up and play with it.

Currently there is no demo sorry.

I know it is a bit hard to decide without even single video about it. If you like you can wait. I was busy with some other freelance projects sorry.

@razzraziel Thanks for getting back to me, sounds good. I understand having other work to do. :slight_smile:

Good news, I’m done with the trailer at last. Now I can finally announce Interactor since no one still knows it. I’ll publish it next week with the new update. I think it will worth the long wait.

Also I can work freely on Interactor. Last but not least, all the tutorial videos will be live next week too.

Edit: 0.72 update is pending. Now example scenes work with the new Input System as well as the Legacy one.

Trailer added! I hope you’ll like it.

2 Likes

Latest news:

-Version 0.72 published. And also two tutorial videos are online.

  • Changelog - Interactor Online Documentation

  • Tutorial Videos - Interactor Online Documentation

  • First announcement is well received on Reddit and Youtube.

  • Working on 0.75 update right now.

  • Custom easing for interactions with Animation curves is done.

  • Look at Target is done. So player can look at selected interaction target automatically. And it can be enabled on each interaction object.

  • Spawning prefabs with exact same rotations on clicked spot (Revisited). You can set position and rotations of your prefab targets around the world center (Forward is global world forward now). Same position offset and rotation offset will take place when you spawn them on your clicked point (Depending on your spawn options).

  • Also working on InteractorObject component. Not decided yet but if this one lands, you won’t see all settings on this component anymore. When you select interaction type on object, you’ll only see that type’s settings with ScriptableObject assets. Other settings (so all the unnecessary variables) won’t take space in your memory. And you can use same interaction settings in other interaction objects since they are all ScriptableObject assets.

  • And last, working on SceneView window to use it in Spawner mode. It’ll have some options for interaction type, spawning rotation rules etc. So you can work in full screen while spawning new interactions without selecting objects or using Spawner window.

Hey guys, great news. v0.75 update took longer because it turned into a major update. My last 45 days went into this update and now it is published on Asset Store as v0.86.

Here is the changelog for it:

  • Faster Workflow with Interaction Presets (New SceneView Window Spawner Mode)
  • New Example Scene with Unity Armature
  • Interaction types seperated from InteractorObject as ScriptableObject assets
  • Highly customizable Look settings
  • Interaction Priority values for selecting interactions and their look orders
  • Smooth interaction interruptions with Interrupt Transfer
  • Interaction speeds per InteractorObject
  • Custom easing for interactions with Animation Curves
  • All target spawning rotation modes improved
  • Minimum range added for effector settings
  • All override options added (All angles, min & max ranges) for InteractorTargets
  • Custom layer names
  • Most of interaction types overhauled and improved
  • Predestined drop and hold positions for pick up objects
  • Final IK v2.1 support & All new features for Final IK versions
  • Interactor Core version removed
  • Other improvements on several scripts

And this is the new trailer and new example scene that included in latest update. It focuses on new preset feature and showcases the easy & fast workflow even for complex interactions.

Also we have new 3 tutorials. Two of them are quite long but all of them have video segments so you can skip or watch specific topics. All the new features covered in these videos.

If you have any questions, just let me know over here or via email.

Hi, I’m thinking to buy this one and will use it in two different projects. One of them is mobile so I wonder if that performs well in mobile platforms?

@rojbarak

The influence of the Interactor would be too low and hardly noticeable even on old devices. Tested with my 4 year old Xiaomi Mi6, it was 60 fps (locked to 60) and sometimes goes to 57-58 when player is around the interactions and interacting.

Here is a quick capture, sorry it was a bit hard to play without UI selection and with one hand.

3 Likes

Thank you for the effort. I’ll give it a try.

1 Like

Experimented with procedural hand poses for a day. Right now it feels a bit off and needs optimizations (0.5ms) and fingers are like snakes.

Workflow is like this:
Transparent box is the area that holds desired object to cache (resizable). Then it creates points with given density (to create point clouds like structure) and creates the same shape. Then discards inner points to get only edges (no need for inner points). Then it only gets X amount of closest points to a given transform point. So you get only interactable part of an object with much lower point count. For example for a door object, you can only get the edges around door handle where your procedural interaction will take place. Because more points = more process. And last, these points work like colliders for bones.

ObviousKindDavidstiger
If improved, it can allow users to put a single point on desired object instead of prefab targets. So transparent box will be spawned on right clicked object and cache the points in the background. Then the rest will taken care of by Interactor with much more realistic movements and adaptation for the players position.

2 Likes

Hi, I’ve added support for turning off game objects with InteractionTarget components but this means I can’t plug-and-play any future updates you make.

Can you please add support for turning interaction targets on/off at runtime? This is just via gameObject.SetActive(false/true). I’ve just modified the loops in Interactor.cs to ignore disabled objects.

It also appears that InteractorObject.duration has no effect on the duration of the interaction, when used with Final IK at least. InteractionSystem Speed does help, but that’s not per interaction as InteractorObject.duration suggests.

Hi @Aborup

Sure, let me think about it first. I need to decide what the default behaviors should be. Because it also directly affects the interactions with multiple targets. For example what would happen if you turn a left hand target off when holding a two hand pick up object? It should end the interaction completely since you can’t hold that kind of object with just one hand. Then since we’re turning the whole thing off, why don’t we just end the interaction instead.

Or what happens if you turn a foot off when using a vehicle? It’ll end the foot interaction for sure, but if it needs to start itself when enabled again, then the whole logic should change for multiple interaction type.

These kinds of things. What was your purpose for turning on and off the targets? So I can get a better scope what to do.

On Final IK version, I don’t control everything because Final IK already has its own interaction system which also allows some other controls other than Interactor offers. And also InteractionSystem, InteractionTarget and InteractionObject are all Final IK components and needed for Final IK’s own internal workflow. You can inspect the InteractionObject component, there are lots of setting. And time, pause settings exist over there. Also you can see its doc for details and how to use its settings over here: Interaction System

But you’re right I should remove speed settings on InteractorObject on Final IK version, since they do nothing for Final IK’s InteractionObject time and pause.

I have interaction targets for both left and right hand on a surface and I never allow both, so I turn one of them off, conditionally, and enable the other, based on which hand I want to go on the surface.

Re: duration/speed. Okay, that’s fine. Thanks for clarifying.

@Aborup

Ok for now you can use InteractorOverride component on targets. Just add the component and enable override. If you enable override and leave the default values, that target will act like disabled and behave exactly what you wanted. OverrideEffector bool is public and you can turn it on/off with a reference to component (This is for Final IK version). Does this works for you?

And on the next update I’ll add “skip target if it is disabled” for one hand interactions.

1 Like