Yes, I think using a trigger like that would be a reasonable way to achieve it.
Basically, (and I’m kind of guessing here from what I’ve seen, but I haven’t looked into the engine code in detail) as far as I know overlap states will only cause objects to move in the case of physics objects. Character movement also has code to push out of overlaps, but this is only really meant as a way to resolve states that shouldn’t really occur. Anyway it only takes effect when an attempt is made to move the character.
@Jamendxman3: Are your other meshes set to simulate physics? If not then I am missing something, as I wouldn’t expect them to get moved just as a result of rescaling a wall.
It is not because it is being scaled, I tested having the 4 sides of the wall just move individually without any scaling, the problem was the exact same. Also, what do you mean by looking into physics simulation?
If the meshes are static you can simulate in-game physics with them.
I was agreeing with kamrann’s previous post about physics simulation.
Alright, wait, you said four sides.
Are you enclosing the player in a box-like shape (one wall coming from the north, one from the south, etc.)?
Then again, I still go back to just using a trigger that will translate the player.
It seems there is a collision problem and this seems like the easiest option.
Yes, I am enclosing them in a box shape, each side moves towards the center, eventually smashing the player. Using a trigger seems unreliable as I do not have a constant speed at which the walls are moving, and the walls are also able to move outwards (rather than inwards) in order to reward the player.
They are closing at a constant speed, and when the player achieves the objective inside of the walls, the walls lerp to an opening speed, and then switch back to the closing speed.
It would be great if we could get a dev to look into this, it’s a frustrating limitation that’s hard to workaround. Anyone have any ideas on how to fix this?
If you are using C++, and don’t mind dirty trick, then try edit your character.cpp. Find your “MoveForward(float Value)”
Edit “AddMoveMentInput(Direction, Value)”, to “Value+0.0001”. (Or something smaller)
I believe if this “Value” is not zero, it force to evalue collision every frame.
Yes, this will move your character a bit forward overtime, but you keep it small enought, you probably won’t notice it.
I’m having exactly this same problem. It puzzles me how such a common situation doesn’t have a built in solution. In my case, I have this blocks coming out from the walls and I want them to push the player. The movement is very jerky, and to make it to work in an almost acceptable way, I had to make big collision boxes on the blocks (which is not viable).
Could you please point me to it? Hard to find it because I don’t know exactly what to search for. I bumped into this thread while looking for something completely different.
Thanks!
Agreed, this seems to be a very common problem, and as it was pointed out to me it seems to mainly be because of the shape of the capsule component, as the capsule is a cylinder which has domes on both ends. What seems to happen is the moving colliders have to reach the exact center of the bottom of the capsule of the player that is standing on the ground, when this happens it seems the player is pushed out of the overlap in a very herky jerky way, and not smoothly as soon as “any” of the capsule compenent overlaps. Trying to find a solution. Moving wall / cube pushes player in steps and not smoothly, how to fix?