Hey guys! I’m new around here, as you can see
I’ve been deep diving into the VR template BPs and it’s functions, and I notice that for the Drop Event (Release Actor Function), there’s a branch that verifies if the Attached Actor is still attached to the Motion Controller. Which means that we can’t use the Pickup+Drop events for anything else other than attaching Actors to the Motion Controller. That sucks because some times we just want to activate an Event Tick on Pickup and deactivate the Event Tick on Drop. (Rotating doors, pulling drawers, etc)
Turns out that this Branch check on Release Actor is very important, because if I for instance pickup the object with the left hand, and than pick it up again with the right one, if any of the triggers are released, the Actor will drop, regardless of which hand is holding the object.
I have already bypassed this in a not-so-elegant way, and I’m looking for a better design pattern.
- On Pickup Interface > Drop: I’ve added a return node for the motion controller (Exactly the same “AttachTo” return node from the Pickup)
- On Motion Controller > Release: I removed the Branch verification for the AttachedActor and added the Motion Controller Actor to the return node.
- On the Pick Up Cube > Event Graph (for example, could be any other blueprint): I do the following:
Event Pick Up > Get Variable for Motion Controler/Hand (Enum)
Event Drop > Get Variable for Motion Controler/Hand (Enum)
- On the Event Drop: Create Branch: If Hand (Enum) from PickUp == Hand (Enum) from Drop, Continue.
Overall what I did was taking the check from “Is Attach” to “Is Left/Right” hand. But the check is running on the Pick Up Cube, rather than on the Motion Controller side. That means that for every interactable object, I’ll need to copy paste this shizzle.
Any thoughts on this? I’ll try to post some screenshots later.