Dragon's tail will sweep player away for long distance

Hi guys, so I already made sure that all capsule component and mesh collision settings are set to query only, but when dragon plays a turn180 montage, the tail will still cause velocity to Character when it hits my character, how to avoild the velocity change when tail hits character?

Hi, I have the same problem.

Hello, do you have solved the problem?

Hi guys, I have found a solution, but I am not sure if it is the optimal solution. I posted this solution here, which may provide ideas for people who encounter similar problems in the future.

Check on the Walkable Slope Override of dragon’s SkeletalMeshComponent, and set Walkable Slop Behavior was Unwalkable, that’s it! I used Unreal version 5.6.

The solution process is as follows:

The problem is Dragon’s tail or other part mesh will sweep player fly away for long distance. My test is player stand still in front of the Dragon.

I traced the problem to the engine source code, it was StartNewPhysics()→PhysWalking() cause the player move or fly. I further discovered that’s because Dragon’s mesh collision penetrate player’s capsule or mesh collision, then Engine ResolvePenetration() and call MoveUpdatedComponent(), so the Player has velocity.

At Next PhysWalking(), the velocity and DeltaMove (bZeroDelta) was non zero, will call MoveAlongFloor(), currentFloor was Dragon’s mesh, because collision between player and Dragon’s mesh was block. Then check currentFloor was walkable, because default walkable behavior was Unchanged, not Unwalkable. So player move along the Dragon’s mesh floor and fly away.

This leads to a solution to the problem: change the Dragon’s mesh walkable to unwalkable.

Please feel free to propose your solutions.

If anyone knows how Monster Hunter handles this problem, that would be great :slight_smile: