Disable impulse on hit?

Greetings, ladies and gentlemen.

My question is as follows: it is possible to completely remove impulse on hit, when we’re talking about two actors that simulate physics and both have they mass and velocity?

In my case, I have an actor that represents a light particle that moves at high velocity, and when it hits a cube it gets destroyed and invokes some functions. Right now I’m using an overlap event, but that doesn’t always work if velocity is too high. Using hit events allows using CCD, but then the cube receives an impulse from the particle and moves/budges, and I want to get rid of that.

Alas, searching the Internet didn’t yield much.

Thank you in advance.

They are not characters, just physical actors.

That’s not an option, really.

I can’t lessen the distance because there are various forces that apply to the light particle that can make it travel faster or slower, and I can’t set its mass to almost zero, because it will make those forces affect the particles too much.

And I can’t increase the collision size because it won’t be right from the visual perspective.

Thank you for your input. Unfortunately, I can’t use that; I need the cube to continue simulating all other aspects of physics: falling, being affected by other forces and cubes; so basically everything save receiving impulse from the light particle.

You can solve your issue by using OnOverlap instead of OnHit. As for your light actor missing your target due to fast trajectory, you can solve it by filling the collision gaps. Below is an example how I solved mine:

Preface: My issue was that my sword attack animation doesn’t have a smooth swing animation which resulted to collision gaps, hence missed attacks.

Green boxes are Sword collisions drawn each frame.

I solved this by filling the collision gaps with BoxTraceByChannel and then query the resulting Out Hit.

Green boxes are Sword collisions drawn each frame.
Red boxes are BoxTraceByChannel collisions drawn each frame.

Here’s how I did it:

When the character attacks, Attacking variable is set to True. On Event Tick, if Attacking is True, collision checks are done in 3 steps:

  1. DrawCollision event. This does not nothing but draw the Sword collision on each animation frame.

  1. TraceCollisionGap event. This fills in the collision gaps by doing BoxTraceByChannel between 2 Sword Collisions (previous and current frame).

  1. SaveCollisionTransform event. We now save the current Sword Collision transform as previous collision transform (this includes: Center, Box Extent, and Rotation of Sword Collision). This will be used by TraceCollisionGap for the next frame.