what you have there would work fine, were you only ever to move along a single axis. the problem comes about when you turn the camera sideways using the mousemove functions you've hooked up.
keep in mind that if you're facing the z-positive direction, the code you've posted will work fine. do this excercise on a piece of grid paper:
1) draw a dot in the middle
2) draw a cross through the dot top to bottom and left to right
3) on the left-right axis, label it 'X'
4) the top-bottom gets 'Z'
5) draw an arrow from the dot towards the top of the page
okay, what you're looking at is a top-down view of where your camera is (the dot) and the direction it is pointing in (the arrow).
now try this:
1) 'move' your dot 2 spaces to the left along the x axis
2) redraw the arrow
if you consider this last experiment, the camera did indeed move to the left, and you saw what you expected. now try this:
1) 'turn' the dot 90 degrees to the left and redraw the arrow to point to the left side of the page
2) 'move' your dot 2 spaces to the left along the x axis
3) redraw the arrow
what happened? well...you did indeed move the camera to the left, but as far as the camera was concerned, you actually moved it 'forward'.
when you try to move the camera, you have to take into account the angle that it is facing. you can do this simply with the COS and SIN commands in conjunction with the angle of the camera, but the trick that I posted above works just the same (and lets DBPro do the SIN and COS maths for you). this was a trick that indi pointed out to me, I believe
one last excercise:
1) position the dot anywhere you like
2) draw the arrow in any direction you like
3) now move left:
3.1) rotate the arrow 90 degrees to the left
3.2) move the dot 2 units
3.3) rotate the arrow 90 degrees to the right
now,
that's what we're looking for
-= i only do what my rice krispies tell me to do =-