I’m using the Lite-C Free version. Some collision detection fails. Based on the manual, I have to create a hollow block in order for c_move collision detection to works properly. So I created my game as below :-




Preparation in MED:

Stage (the red color): Consist of 5 blocks. 4 x walls and 1 x floor. Save into one .mdl

Big Room (the grey color): Consist of 6 blocks. Save into six .mdl

Invisible Stage Bounding (the teal color): Consist of 6 blocks. The bottom blocks touched the bottom of the stage. Save into six .mdl

Obstacle (the green color): A box saved into one .mdl

Obj1 (the yellow color): A sphere saved into one .mdl

Obj2 (the blue color): A sphere saved into one .mdl


Preparation in Lite-C (the code):

Stage: Call using ent_create( ). Set to PASSABLE.

Big Room: Call each block separately using ent_create( ).

Invisible Stage Bounding: Call each block separately using ent_create( ). Set to INVISIBLE.

Obstacle: Call using ent_create( ).

Obj1: Call using ent_create( ). Move using phent_addtorqueglobal( ).

Obj2:
Call using ent_create( ).
Move using c_move( …, GLIDE | IGNORE_PASSABLE ).
Set emask |= (ENABLE_ENTITY)
In the event function, on case EVENT_ENTITY, vec_to_angle(my.pan, bounce).


What happened?

Obj1 got no problem. It can collide with the Invisible Stage Bounding, Obj2 and the Obstacle.
Obj2 can collide with the Obstacle and Obj1 but CAN PENETRATE the Invisible Stage Bounding.


So where is my mistake?

FYI, I tried 2 version of the Big Room (the grey color). Both fail. The first one, each block overlaps each other. Which means, even the smallest entity can’t pass through them. The second version, I apart them a little bit. Which means, a very small entity can pass the gap but the Obj2 (the yellow color) still can’t make it since the gap is not too big.

Or is there anything to do with the sequence of entity loading?