Ich habe B&W nie gespielt und weiß deshalb auch nicht ganz genau wie das Endprodukt aussehen soll, aber vieleicht kann dir folgender Code ein wenig weiter helfen:
function isometric_camera() // displays the player from an orbit-view
{
var i =0; //pan-cam
var i2=0; //tilt-cam
while (player == NULL) {wait (1);} // wait until the player is created
while (1)
{
i2+=(mouse_force.y)*12*time_step;
i2=clamp(i2,-90,90);
i+=(mouse_force.x)*40*time_step; //auskommentieren und im player-code
//"pan+=(mouse_force.x)*40*time_step;" oder
//"c_rotate(my,vector(40 * (mouse_force.x) * time_step,0,0),IGNORE_PASSABLE);"
//setzen
camera.pan = player.pan+i;
camera.tilt = player.tilt+i2;
camera.z = player.z +10 - 50 * sin(camera.tilt);
camera.x = (player.x - 50 *cos(camera.tilt)*cos(player.pan+i));
camera.y = (player.y - 50 *cos(camera.tilt)*sin(player.pan+i));
wait (1);
}
}
Das ist ein Kamera, welche sich in einem festgelegtem Abstand (50 Quants in unserem Fall) um einen Punkt (hier 10 Quants über dem player ) mit der Maus rotieren lässt. Folgst du dem Kommentar bei der i+=... Zeile, dann rotiert die player entity mit der Mausbewegung und die Kamera mit ihr-ansonsten nur die Kamera um den player.
Musst eben noch player=my; im Code der Entity einfügen an welche die Kamera gehängt werden soll.
Vieleicht kannste dem Code was für dich Nützliches entnehmen.