Its because using the built in object collision commands means using box collision, which is basically where DBP draws two boxes around the two objects colliding. These boxes go to the object's extents on all 3 axises, and if these 2 objects overlap, a collision is recorded. Even if you had a level, like this;
The box for that level would look like;
________
| |
| |
|______|
Which is why usually any game that requires serious collision, whereby you actually want to know if the object is touching a polygon and not thin air, you use raycasting. For example, here's a basic one;
SYNC ON:SYNC RATE 0:AUTOCAM OFF:HIDE MOUSE
MAKE OBJECT SPHERE 1,10
POSITION OBJECT 1,0,100,0
MAKE OBJECT BOX 2,1000,1,1000
COLOR OBJECT 2,RGB(255,255,000)
POSITION CAMERA 0,50,-300
DO
TEXT 0,0,"Press the spacebar to drop the ball"
IF SPACEKEY() = 1 AND Fallen = 0 THEN Drop = 1
IF Drop = 1
OX# = OBJECT POSITION X(1)
OY# = OBJECT POSITION Y(1)
OZ# = OBJECT POSITION Z(1)
MOVE OBJECT DOWN 1,1
X# = OBJECT POSITION X(1)
Y# = OBJECT POSITION Y(1)
Z# = OBJECT POSITION Z(1)
CollisionDist# = INTERSECT OBJECT(2,OX#,OY#,OZ#,X#,Y#,Z#)
IF CollisionDist# > 0
Drop = 0
Fallen = 1
ENDIF
ENDIF
SYNC
LOOP
I dont have time to explain it right now, but look up intersect object and raycast on the forum boards to get more info. Also, look into getting Sparky's Collision dll, its much faster than DBP's built in intersect object command and comes with a tonne of others to help with collision, including a sliding collision command set.
Also, if your heart is set on using the built in collision commands (I really hope not) then look up POLYGON in the help file until you find the command that sets object collision to mode "POLYGON", I forget which command it is or Id say, I think its "SET POLYGONAL COLLISION ON".
Your signature has been erased by a mod because it's larger than 600x120...