Wegfindung per WED Pfade

Posted By: Meerkat

Wegfindung per WED Pfade - 06/09/12 18:40

Hallo liebe Community,

ich bin mir nicht sicher ob ich einen Bug gefunden habe oder aber es einfach nur einen dicken Logikfehler habe im Code. Und zwar möchte ich mit diesem Code das eine Entity einem mit WED gesetzten Pfad folgt. Hier ist der Code:

Code:
VECTOR Temp_var;
var AIReichweite;

action GegnerAI()
{
	while(!player){wait(1);} //warte bis Spieler da ist!
	
	my.skill4 = 1; //Aktueller Wegpunkt!
	path_set(my, "path_000");
	path_getnode(my,my.skill4,Temp_var,NULL);
	
	while(1)
	{
		my.skill3 = c_trace(my.x,Temp_var, IGNORE_ME | USE_POLYGON);
		AIReichweite = my.skill3; //Globale Variable um zu sehen ob die Reichweitenmessung funktioniert!
		
		if(my.skill3 > 30) //skill3 = Reichweite bis zum nächsten Wegpunkt!
		{
			path_getnode(my,my.skill4,Temp_var,NULL);
			vec_sub(Temp_var, my.x);
			vec_to_angle(my.pan,Temp_var);
			
			c_move(my, vector(3*time_step,0,0), nullvector, GLIDE);
		}
		else
		{
			my.skill4 += 1; //Wenn Wegpunkt erreicht, setze nächsten!
		}
		wait(1);
	}
	return;
}



Ich warte erstmal mit der AI bis der Spieler im Level erstellt worden ist. Dann setz ich mit Skill4 den anzupeilenden Wegpunkt. Mit Path_Set setze ich die AI auf eine Route von WED und sage mit Path_Getnode das ich die erste Position von der Node in dem vordefinierten Vector gespeichert haben will. Per C_Trace möchte ich dann prüfen wie weit die AI vom Wegpunkt entfernt ist damit ich damit bestimmen kann ab welcher Entfernung auf den nächsten Wegpunkt umgesprungen wird. Das ist meine Theorie und in der Praxis sollte das auch funktionieren. Ich habe jedoch die Feststellung gemacht das sich die AI keinen Meter bewegt. Der Tracewert ist "0"! Lasse ich jedoch eine Temporäre Entity an der Nodeposition erscheinen und lasse diese antracen, dann funktioniert die Reichweitenmessung. Warum ist das so? Ist das ein Bug oder mache ich wie gesagt einen Fehler? Immerhin denke ich das in Temp_var ja die Position von der ersten Node gespeichert ist und das antracebar sein sollte. Ich arbeite derzeit wieder mit der A7. Wenn da jemand eine Lösung weiss oder was ich halt falsch mach, bitte gebt mir einen Ratschlag bzw. Tip.


MfG

Meerkat Laru
Posted By: Superku

Re: Wegfindung per WED Pfade - 06/09/12 19:12

Quote:
Per C_Trace möchte ich dann prüfen wie weit die AI vom Wegpunkt entfernt ist damit ich damit bestimmen kann ab welcher Entfernung auf den nächsten Wegpunkt umgesprungen wird. Das ist meine Theorie und in der Praxis sollte das auch funktionieren.

Das ist leider eine schlechte und sehr langsame Lösung, benutze doch einfach vec_dist(), um Distanzen zu bestimmen.
Wie du dem Manual entnehmen kannst, liefert c_trace nur dann einen Wert größer 0 zurück, wenn etwas getroffen worden ist. Sonst ist der Rückgabewert 0.

EDIT: Übrigens, wenn du nah genug am Ziel bist und den Node-Skill erhöhst, musst du natürlich auch deinen Ziel-Vektor (temp_var) neu setzen.
Posted By: Meerkat

Re: Wegfindung per WED Pfade - 06/09/12 19:49

Ah ok, danke. Werd ich nachher mal probieren. Ich bin neu im Gebiet des Pathfinding. ^^

Edit: Templates will ich nicht benutzen da ich es von Grund auf neu lernen möchte damit ich es besser verstehe. laugh

Edit2: Okay ich bin verwirrt. Auf der 1. Hälfte der Strecke zählt er normal runter, ab der 2. Hälfte zählt er wieder hoch??? Und dabei erreicht er nichtmal die "0" sondern schnellt bei ca. 320 wieder hoch. Wasn das? Heißt ergo ich kann immer noch nicht prüfen wann er den Wegpunkt erreicht. Dabei mache ich das schon mit "my.skill3 = vec_dist(Temp_var, my.x);". ^^

Letzter Edit:

Ich hab es ans laufen bekommen. Gott was bin ich happy. ^^
© 2024 lite-C Forums