Wie funktioniert die vec_to_angle Anweisung?

Posted By: littlejacky

Wie funktioniert die vec_to_angle Anweisung? - 04/11/09 06:46

Wie funktioniert die vec_to_angle Anweisung?
und kann man sie auch bei der Kamera benutzen?
Posted By: Germanunkol

Re: Wie funktioniert die vec_to_angle Anweisung? - 04/11/09 08:27

Beispiel:

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]

Posted By: Rasch

Re: Wie funktioniert die vec_to_angle Anweisung? - 04/11/09 13:02

vec_set(temp,you.x);
vec_sub(temp,my.x);
vec_to_angle(my.pan,temp);

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.

vec_set(temp,you.x);
vec_sub(temp,camera.x);
vec_to_angle(camera.pan,temp);

Das ganze sieht dann so aus.


Posted By: littlejacky

Re: Wie funktioniert die vec_to_angle Anweisung? - 04/11/09 18:12

Danke!
Aber bei mir kommt immer eine Fehlermeldung!
wo muss man diese Zeilen einfügen und muss ich noch was hinzufügen?
Posted By: Rasch

Re: Wie funktioniert die vec_to_angle Anweisung? - 04/12/09 17:17

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);
}

Posted By: littlejacky

Re: Wie funktioniert die vec_to_angle Anweisung? - 04/12/09 19:19

Danke!!!!!!!!
Vielen Dank!!!
von selbst hätt ich das net verstanden!!!!
Nochmals Danke!!
Posted By: Rasch

Re: Wie funktioniert die vec_to_angle Anweisung? - 04/13/09 12:44

Gern geschehen smile
© 2023 lite-C Forums