I was having the seemingly common problem of a player collider interacting strangely with a tile collider. the player would bump up slightly like there was an invisible bump or something, and using a square collider would just get stuck outright. I looked at the forums and saw that a composite collider would work better, which makes sense but my character just kinda falls through the floor. why is my player collider not interacting with the composite collider? both the player and the tile map have 2D colliders and rigid bodies. I’m still very new to unity, so sorry if this has an obvious solution.
Hey @Bannanaking3 thanks for the question! Do you happen to have some screenshots of your scene so that we can understand your set-up better?
It sounds like you may be experiencing a “ghost” vertex/collision/contact issue. (Nothing paranormal here, just Physics.
)This can happen when you use any polygon colliders such as the Box Collider 2D or the Polygon Collider 2D and place them side by side.

When you move the player’s Box Collider 2D over the top of these multiple Colliders, the physics engine might detect a corner of one of the boxes which would cause a change in velocity resulting in the object jumping slightly, slowing down, stopping or even bouncing backwards.
The simplest way to workaround this is to swap your player’s polygon collider to a a Capsule Collider 2D or a Circle Collider 2D to minimise the catching. If this isn’t enough, then another way is to use the Composite Collider 2D like what you tried.
Did you use the Composite Collider 2D on a Tilemap Collider 2D? That’s another solution too as the Composite Collider 2D will help merge all the Tiles Physics polygon shapes into continuous edges. This will help the player move along smoothly. Though it beats me as to why your player falls through. Perhaps some screenshots might us debug better.
Note: A small note though, the Composite Collider 2D works best for static Tilemaps as any dynamic changes would require expensive global recalculation. So if your Tilemap doesn’t change during runtime, this workaround would work for you.