This happens because your camera gets behind some walls, I think.The problem is that the backfaces are not shown so the part of your level seems to disappear. What you need is a camera collisionsystem. just trace from the point, the camera is aiming to, to the position your camera should be placed at, if there wasn't a wall. And then make the camera be placed either at your planned position or at the target on the wall. here an example from my game silent wg:
Code:
vec_Set(temp,nullvector);
vec_set(temp,vector(-180,0,160));//I want the camera at 180 //behind the player and 160 above him
vec_rotate(temp,player.pan);//this rotates the vector
vec_add(temp,player.x);//this finally sets the vector to the //position I wanted
c_trace(vector(player.x,player.y,temp.z),temp,ignore_me+ignore_you+ignore_passable+ignore_passents+ignore_models+ignore_sprites);
if(result==0){//if there isn't a wall
vec_set(camera.x,temp);
}else{
vec_set(camera.x,target);
}
you would have to put it in a while loop and thats it.