Disabling object collision when it stops moving

Hello!

This is my first post and also the first problem I had that I couldn’t find a solution on the forums.

So, I made this blueprint for kickable items. When you get into the triggerable area of the item and kick it, it turns the collision and physics presets for the item ON, so it flies around when hit by the kick. When the object hits a NPC character, the hitted NPC dies and the item is destroyed. If it doesn’t hit a NPC, it just keeps moving until it stops.

Here my problem begins: I want the item to have its collision turned to OFF again to reset its status and be kickable again, but only when it stops moving. That’s because I don’t want it to move around when the character pushes against it. As you can see below, the movement block is made by a block volume and not by the mesh itself.

The logic is set, but I can’t find a way to get the item’s current movement state to make it work. I tried many options, like getting the mesh’s vector velocity or comparing the item world location every 0.2s, without success.

I am thankful for every suggestion you can give me.

Screenshots:

Have you tried using the Get Velocity BP node to check if the velocity of the ball is greater than zero (moving) or zero (not moving)?

Yes Dartanlla, I have tried that already. Maybe there’s a problem with my logic or collision settings?

Yes, that is likely the case, my guess is that you want to add some code to your actors tick event to check if velocity is greater than zero or equal to zero. Use that value to set a bool IsMoving variable. Then try using the IsMoving bool in your logic.

I see, I totally forgot about the event tick option. Thanks! I will try that tomorrow and tell you if it works.

I set it up but still not working :frowning: It sets IsMoving to False every time, so I don’t think the getVelocity is working here. I tried to get the Mesh’s velocity instead of the Actor’s, but the results are the same.

Put print strings on both of your set is moving nodes. Then put a print string before and after your branch. This should give you an idea of what is happening.