Hi everyone, i’m stuck on this problem.
I have a pawn, with a static mesh as rootComponent.
I have other static mesh component on this pawn. They are child of root component. They have collision, generate hit event, collide with all etc.
But, this other static mesh never collide with something, all collision are ignored. Did you have an idea about this please ?
I try to replace this “other static mesh” with child actor, and it’s the same
depending on how you move the attached additional mesh components, you might run into problems. What I noticed for myself is that other components then the root component are not moved but teleported when you move your pawn, so you might need to implement some sweeping on your own.
Hum, so my root component (static mesh) have collision, and my other static mesh, because they are teleported (by engine) they haven’t trigger collision event. So i must make my own collision research on tick ? Did you have an idea how i can make this please ?
i tried to use myStaticMesh->GetOverlappingActors(Array) but the “Array” stayed empty
It’s just a theory and without an example, hard to tell if my guess is correct.
Depending on what you need the effect for you can do different things to solve the problem.
For prototyping you could for example record your old transformation every tick, and then sweep the other colliders to the current transform
will not be the most performant one and your pawn movement will not be influenced by it,
but you can make other things react to the collisions.
If you want to make your pawn movement react to the collisions, you will have a lot more work in front of you, you would need to go into whatever movement component you are using and add your additional colliders to the test while moving and then react to the found collisions.
no no i just need to know if the other static mesh component has overlap or collide with other object. If something hit him it will be destroy, so it’s basic.
i try, GetWorld()->ComponentOverlapMulti, GetWorld()->ComponentSweepMulti, but nothing work (or i fail to use it)
GetWorld()->ComponentSweepMulti should do the trick
have you tried just dropping your other static meshes into the scene, to test if they collide on their own?
yes they collide if i drop him
might have overshot the target a little bit
attached shapes still generate hit and overlap events, as long as they are not too tiny or moved too fast,
in my test, a component set to OverlapAllDynamic found overlaps as long as both actors were set to generate overlap events
so the component + the other actors component you want to overlap with
all actor / component are set with generate hit event / generate overlap event.
I use SweepMultiByProfile, and found some hit, but is really heavy solution.
Seriously, they are not a better way ??
I take an example. If i have a ship (so a static mesh) as pawn. On this ship i would like to add a shield (an other static mesh), i must check on tick all sweep manually ?
if you only want overlaps, you don’t need to sweep by hand, if you want reliable hits, I’m afraid so.
Without sweeping, you still get hits on something moving into your collider but you don’t get hits on your collider hitting something.
ok so i will sweep by hand
So finaly i use SweepMultiByObjectType and it’s work (with a box we need a delta between your start and end, with a sphere you can have the same start and end).