So, the FlxG collide method knows how to tell which tiles in a tilemap are walls or not walls, but the overlap method does not. If you write a simple custom collision with the overlap method and tell it to .separate()
, your sprite will collide with every tile in the map, not just the walls.
This is expected behavior, as there’s a note in the FlxG documentation that says:
this takes the entire area of FlxTilemaps into account (including “empty” tiles). Use FlxTilemap#overlaps() if you don’t want that.
On the other hand, the documentation for FlxTilemaps.overlaps() says:
Checks to see if some FlxObject overlaps this FlxObject object in world space. If the group has a LOT of things in it, it might be faster to use FlxG.overlaps().
In my scenario I have a lot of tilemaps and just one object to collide with them, the player. The way this is written, I’m thinking I have to call this method for EACH MAP, i.e. map1.overlaps(player)
, map2.overlaps(player)
, etc. Whereas with the FlxG method I can pass it the entire FlxGroup of maps as one parameter and the player as another parameter, which seems way better. I guess I could write a function with a loop that iterates through each map doing this one by one, and then call that in update()
, but I’m getting the impression that it might be really inefficient.
What’s the best approach here? Am I missing something obvious?