Encountered similar issue (kinematic and dynamic collision objects interacting with static tilemap).
OS: Windows 10.
Defold: 1.2.146
Reproduce:
Allow kinematic/dynamic collision objects to reach steady-state on collision tile. (e.g. player or object landing on tile)
set_tile() sets the tile to one not included in the collision mask.
kinematic/dynamic object remains at rest.
Initiating movement on the kinematic object recognizes updated collision mask, but only when the contact normal vector changes/is refreshed (verified through physics debug view).
e.g. moving away and then re-initiating contact with where the ghost tile is will respect the updated collision mask. Moving laterally to the ghost tile will cause the collision to persist.
IMHO this limits potential for using dynamic tilemaps during gameplay.
@britzl downloaded 1.2.147 and reproduced my issue in post #6.
Post #6 highlights a more subtle issue and may need a new DEF- bug.
It refers to using a tilemap already instantiated in the main collection, and calling set_tile() to replace a collision mask tile with non-collision mask tile.
The collision mask does update, but the existing contact point normal vectors persist until the colliding object has been moved away.
i.e., set_tile() does not remove physics contact points.
I suspect the same bug may apply to factory-spawned tilemaps.
I managed to get a project for the issue that @0xfe was talking about. When a dynamic object collides with static tiles that are set up to collide with it and then the tiles are changed with others that shouldn’t collide with the object, the object remains still even if it should fall through. I also tried with a kinematic object with simulated physic from the platformer example, but it worked correctly for what I have tested.