The method I use is to create a collision box around the main character. MAKE OBJECT COLLISION BOX Object,x1,y1,z1,x2,y2,z2,flag.
Object is the number of the character
x1,y1,z1,x2,y2,z2 define the size of the box. So if you had a character 100 points by 100 by 100 you´d put -50,-50,-50,50,50,50
flag decides wheather you want sliding collision or more acurate collision (I always go for sliding collision)
Then you make a static collision box that covers the walls.
make static collision box x1,y1,z1,x2,y2,z2
x1,y1 and z1 are the positions of the wall minus half the size and
x2,y2,z2 are the positions of the wall minus half the size
(Acording to example 25 anyway)
Then you put this next piece of code in the main loop
if get static collision hit(oldposx#-s#,oldposy#-s#,oldposz#-s#,oldposx#+s#,oldposy#+s#,oldposz#+s#,posx#-s#,posy#-s#,posz#-s#,posx#+s#,posy#+s#,posz#+s#)=1
dec posx#,get static collision x()
dec posy#,get static collision y()
dec posz#,get static collision z()
if get static collision y()<>0.0 then playergrav#=0.0
endif
position object object number,posx#,posy#,posz#
This changes the position of the charater. I hope this helps. You can find an example of it in example 25 in the basic 3D section