Rewritten camera movement. (Based on previous code, but more specific)
Fixed some problems, but introduced a new one.