vec_diff(temp,my.x,camera.x);//rechnet einen Vektor aus, der von camera.x zu // my.x zeigt uns speichert den in temp. vec_to_angle(camera.pan,temp); //rechnet diesen richtungsvektor in den winkel //um, und speichert diesen in camera.pan. also 'guckt' jetzt die kamera in //die richtung, in die temp gezeigt hat, also guckt jetzt die kamera zur my //entity (zum beispiel den player)
Über den algorithmus dahinter hab ich mir noch keine gedanken gemacht. müsste aber sowas in die richtung sein wie: camera.pan = arctan(y/x); camera.tilt = acrtan(z/(sqrt(x^2+y^2))) camera.roll = 0
könnt sein dass x und y vertauscht werden müssen, keine ahnung.
[edit]... könnte auch sein dass der algorithmus n' ganz anderer is :P [edit]
Last edited by Germanunkol; 04/11/0908:30.
~"I never let school interfere with my education"~ -Mark Twain
Re: Wie funktioniert die vec_to_angle Anweisung?
[Re: Germanunkol]
#260487 04/11/0913:0204/11/0913:02
Zuerst wird der Koordinatenverktor der you(Gegner, entity) in die Variable temp gespeichert. Dann wird die Position zwischen der you-Entitie (Gegner) und der my-Entitie (player) subtrahiert und in temp gespeichert. Mit vec_to_angle dreht sich nun die my-Entitie (player) zum temp Punkt also zur X-Y-Z der temp variable bzw zur you-Entitie.
Wenn du das ganze mit der Kamera machen willst ersetz einfach die my-Entitie durch camera.
Nimm mal diesen Code und bau ihn in ein Neues Level ein. Erstell eine kleine Umgebung und dann platzier eine Entitie. Dieser gibst du dann die "verfolge_entity" Aktion. Ersetze NAME.wmb durch den Namen deiner WMB Datei. Mit W kannst du nun mal die Entitie nach vorne bewegen. Die Kamera folgt der Entite.
Code:
function camera_follow
{
vec_set(temp,player.x);
vec_sub(temp,camera.x);
vec_to_angle(camera.pan,temp);
}
action verfolge_entity
{
player = my;
while(1)
{
if(key_w)
{
c_move(my,vector(5,0,0),null,ignore_me|glide);
}
camera_follow();
wait(1)
}
}
function main()
{
level_load("NAME.wmb");
wait(2);
}
Re: Wie funktioniert die vec_to_angle Anweisung?
[Re: Rasch]
#260647 04/12/0919:1904/12/0919:19