Collision not working when standing still?

For a couple of days now, I’ve been trying to make a simple door. You open and close it with a simple button press. Everything works fine except for one thing. When player character stands still while interacting with door, it passes right through as if collision wasn’t even enabled (which it is of course). But when moving around, collision works just fine and door pushes player along with it as it should.

I made 2 GIFs to make it easier to understand.

Standing still while opening/closing door. Passes right through.


Holding down W key (walking forward) while opening door. I’m pushed along with it, as intended.


I’m using a blueprint with a timeline to open/close door, and I’m using first-person blueprint called “PlayerCharacter” from “ContentExamples” as my pawn. I’ve tried, what feels like, every possible combination of collision settings on both door and player character. I can’t for life of me figure this one out…

2 Likes

Hey Lemmino,

Is your door a Physics Actor? In MyCharacter Blueprint Components, check Collision on [ROOT] Capsule Component. Capsule Component is what is used to detect collision with world in general, rather than Mesh. Expand Collision Presets section. If you are using Pawn Collision Preset, which MyCharacter Blueprint uses by default, then Collision Enabled will be set to No Physics Collision. Switch Presets to Custom, and then switch Collision Enabled to Collision Enabled.

Hope that solves your issue. Please let me know if it does not and we’ll look into how you’re moving your door.

Hi, thanks for reply.

I remember trying what you suggested before (with door as a Physics Actor) and I gave it another try just in case I missed something. Unfortunately that wasn’t it.

I have collisions set up like this right now:

player:


door:


I’ve also tried using an “OnComponentBeginOverlap” in blueprint, but it doesn’t even fire when I stand still.

How are you moving your door? Via or Blueprint? Would you mind letting me see Event Graph for door movement, if it is via Blueprint? Thanks!

I’m actually moving door using a timeline in blueprint. Here’s a screencap:

i’m struggling with something similar. I I have enemies approaching me at all times…I’f I’"m moving collision is fine…If i’ standing still they go through me.

anyone have any idea? is it a collision issue?? I feel like I’ve tried everything.

Good to know I’m not only one with this extremely annoying problem at least.

Are you using Timeline nodes when issue occurs AttemptD?

It’s almost as if player character is considered a static mesh while standing still. Thus when actor moved by Timeline ( door in my case) collides with player, it’s ignored because a static mesh can’t be moved.

That’s my best guess so far. I really don’t know what else I can try…

Hey guys,

I’ve looked into this further and problem is that Simulate Physics is turned off on Pawns. Turning it on, unfortunately, isn’t an option because that will cause a conflict with Character Movement component.

So if you’re looking to have a moving mesh displace a character, you’ll need to actually apply velocity to character based on an overlap event. I will look into doing this via Blueprints tomorrow and see if I can find a simple solution using this method.

This will of course be tricky to get right and isn’t an ideal solution. I will also talk to developers and see if they have any plans to make this more accessible.

Hey guys,

Sorry for delay. There is some development being looked into to make this unnecessary but there is currently no timeline for a change. This is a simple workaround that can certainly be cleaned up, but it should help you get going. There’s a few pictures so it’ll take a couple comments to post it all.

first step is to create a function in your Character Blueprint that will update character’s position when called. It includes a Vector Input. Really very basic:

8255-mycharacterpushed.png

Next, we need to add a component to Door Blueprint. On edge of door opposite its hinges, add a box component. I called mine DoorEdge. We’re going to update door opening part of Blueprint to set a Vector Variable with DoorEdge’s location at beginning of timeline.

After door is rotated, we do a quick check to see if door is touching character. I have already set up IsTouchingCharacter bool variable:

8259-dooristouching.png

If door has reached character and they are now touching, we Cast to Character Blueprint’s push function. We do a simple subtraction of beginning position of Door Edge component from current position, and pass it to function.

So every tick of Timeline, it gets Door Edge’s location, and if it’s touching character it will tell character to move by distance Door Edge moves. There are some issues that can be cleaned up (such as doing a check to see if character is being pushed into another mesh, maybe halting door if that happens, etc), but this basically works.

Again, I know this isn’t ideal and I believe developers are looking into making this unnecessary, but this should help in meantime. You can apply this to anything that needs to move a character with CharacterMovement component when it is standing still.

Anyway, hope that helps! Let me know if you have any questions.

Thank you! This works perfectly!

Add blocking volume around your mesh which you want to be player pushed by. Attach this volume to mesh which you animate via .
In character BP, in capsule component, set trace complex on move to true.
Then player will be moved by blocking volume.
I tested it on 4.6 and it works.

Hey will this ever work?, what is status of fix you talked about.

There hasn’t been any change yet. For now, your best bet is to implement something similar to what was described above.

Is this still necessary? I’m experiencing this to date using animation timelines and this is not intuitive at all, I imagine people will spend at least 30 - 45 minutes of their time believing it’s their fault haha.

(Edit: Alternatively, I’d recommend people to produce doors that swing away from you depending on which side you activate it from.)

Probably someone will be interested - following to your suggestion I’ve created blueprint for a door, which could be opened in both directions, depending on side where player’s trying to open it.


I will do quick explanation about what’s going on here. So when player pressed ‘F’ key we’re checking is he inside one of our trigger boxes, so he’s able to interact with door.
If it’s so - pass control to a CompareFloat function, which checks if our door is closed or opened(and if so - in what direction). If door spin > 0 - pass control to a FlipFlop function and further to Timeline, which responsible for positive(0deg-90deg) sector animation.
same thing for door spin < 0 - pass control to FlipFlop and to another Timeline, which do animation for our door in negative sector(-90deg-0deg).
If door spin is 0(literally door is closed) we ask - in what direction we wanna push our door, depending on where a player is(in what trigger box). If in 1st - pass control to FlipFlop and positive sector timeline, if in 2nd - to negative sector timeline.

That add pin node, one thats connected to Get Actor Location, how did you make that?

From Get actor location node, drag out return value, then release left mouse, blueprint list pop up, either press + on keyboard or look for it under Math category, there are several case of add pin node, either as vector3 + vector3 or vector 3 + float.

Another note is that you shouldn’t comment/ ask on old topic/ question, especially if it doesn’t relate to origin question. It is way better to create new question, you may get help faster, it is easier to gasp what you want to ask, and another reason is each time someone comment/ answer on a question, everyone that have comment/ answer/ ask will get a notify email, so if too many people do this, it get messy quicky.

Based on above, I added an overlap box to door. In character I check intersection with door, if this is true, then I add a minimal movement (0.001) in direction of look (but during overlap, character will move a little). Maybe this option will help someone find right way out of problem.
In fact, it does not matter which way character moves, main thing is to make collision work every tick)

1 Like

I have come across lot of people complaining about this, and i Had same problem with a mobile game im trying to make, I wanted to have lots of various traps that would be able to push character, and i couldnt figure out how to do it well as when ever character is still, traps just went trough it

my solution? make character move ! if character is moving collision works
so on tick, i move my character 0.001 to left, then 0.001 to right, move amount is small enough not to be visible, and it makes character be pushed by moving objects :slight_smile:

may not be perfect but it works, hope this helps someone out there

1 Like