Picking Up/Dropping Objects with collision volumes and widgets

Hello unreal community,
I have been banging my head against my desk for a couple of days now trying to resolve this interaction:

I have a book which I want my character to pick up and drop (drop anywhere) I want to trigger widget using OnActorOverlap but when I attach the object to the character (as child) the Widget won’t disappear because the collision volume is in the object actor… I tried different ways to fake it but nothing seems to work.
Thank you, any tips would be very much appreciated!!
My blueprints are below:


Hey @alinator_bambie1!

I think your issue could be solved by using an “Attach to Component” node instead of your Child Actor node. Setting an actor as a child might be making its Events get changed.
I like to use this node and have a socket on the Skeletal Mesh of the player in the palm of the hand. Using this SHOULD let the book remain itself and remain itself, still an independent actor, just carried by the player.

Let me know how it goes! I’m not sure I 100% understood the question but I’m hoping this will help!

hey @Mind-Brain thank you for the tip! I will try it and will get back to you!
However, I am not sure if it will work.

The issue I have is the actorBeginOverlap with the collision volume which is a component of my BP_Inspectable.
actorBeginOverlap makes widget (press F to pickup) visible.
When I press F, the copy of BP_Inspectable becomes a child of MyCharacter, and the original BP_Inspectable is destroyed. The widget does not go away after myCharacter “picks up” the BP_Inspectable because therfe is a collision volume in it. But I need the widget turn off when myCharacter holds the BP_Inspectable.

Maybe there is a way to call to collision volume component and hide it in the game when it is a child of MyCharacter? I am absolutely clueless how to do it though…

I hope it clarified my question!
Thank you!

Hey again @alinator_bambie1!

So one thing you could do is a bool that would disable query collision once the object is picked up. Maybe get parent, then if parent class=YourCharacterBP set all collisions to Ignore? That way you prevent an overlap event to fire.

Just to be clear, the “Press F” Widget is hovering on the one you are carrying, not the original pick up location, right?

hi @Mind-Brain
The Press F widget is a screen space widget. so here is my blueprint:
widget is on the screen when character overlaps with the BP_inspectable’s collision volume.

here is the second part of the blueprint. Here when F is pressed, the BP_inspectable is destoryed, and the copy of the BP_inspectable becomes a child of MyCharacter. But the widget won’t go away. The reason for this, I assume, is because the copy of BP_Inspectable DOES HAVE A COLLISION VOLUME, which triggers the widget to stay on the screen.

If I add set collision to no collision, my character stops moving. (in the end of the 2nd screenshot)

Is it more clear now? It does not seem like a complicated thing to do, so I am surprised that nothing seems to work. I do not want to have a widget hovering above objects in 3d space, and prefer to have a screenspace ones.

Any tips would be really appreciated…

No worries @alinator_bambie1! So in your pickup code there, I assume that’s on the player?

So you’re disabling the character’s capsule collision. What you need to do is disable the Item Actor’s Collision. So possibly pull off of ItemActor, get component of whatever it’s collision volume is, and set it to No Collision :slight_smile: Now keep in mind, it might matter where you do this, the end there looks like a good spot!