No announcement yet.

Dynamic objects sliding along a flat surface are "tripping" on level surfaces

  • Filter
  • Time
  • Show
Clear All
new posts

    Dynamic objects sliding along a flat surface are "tripping" on level surfaces

    Hey all

    Whats going on is our player can slide boxes around in our level. This all works just fine by making a static mesh, a box, and turning it into a dynamic object, and giving it a physical material.

    However the mesh always seems to trip up on the joins, or edges of whatever it is sliding on.

    So we have a piece of bsp that is curved, the lines that join the vertexs together always seem to act as little walls for the sliding box. It slides smoothly and perfectly until it hits one of these lines. The same is for blocking volumes and static meshes. Pretty much where there is an edge, or a join, or a line on a perfectly flat/level piece of mesh/bsp/blocking volume, it will act as a small little wall for anything sliding over it.

    I am completely stumped :/

    Any ideas as for why this is happening?


    just to clarify the problem is when two BSP brushes (floor) are butting up against each other (they appear perfectly aligned in the editor) but when you travel over the seam between these two brushes you get a bump which causes the character and the boxes to "trip" over the seam.


      CSG brushes have a tendency for rounding errors to crop in on the vertices.
      These errors have a tendency to accumulate (increase) with the number of edits done on the brushes, and to increase with brush moves and rotations.
      Because of this issue I never duplicated brushes and moved them, I always move the builder brush to the desired location and use it to create new brushes that would then never be moved or rotated themselves.

      Most likely if you zoomed in as far as the editor will go you will see that the two CSG brushes on the floor have a very small difference in their vertices, causing a tiny difference in world location that is being noticed by the collision traces.
      Or if it is a large brush surface then the cuts by surrounding brushes are creating the floor faces at different z values (non-co-planar).

      You used to be able to re-snap brush vertices to grid by right-clicking on them but I haven't done CSG in a while.
      I assume that it should still work.

      As a test you could try placing another single subtractive brush on the floor and do a cut 1uu into the floor to create a new flat surface, or try a collision volume 1uu above the surface. But the brush has to be a single unit that does not get cut.
      If it works, then the issue is brush vertex rounding errors pushing them slightly off-grid so that the surfaces are no longer co-planar.

      If you can't fix the brushes' vertices by right-clicking, and since you may not be able to control how the CSG gets cut, if this is just a floor in a building and all else fails you may be able to get away with placing a staticmesh quad floor plane just above the CSG by 1UU or so, or simply a large collision volume slightly above the floor.