@yertari

no! my is the entity who was given the action enemy_follow_path.

me and my is the same. you could replace it with my.

Vyse asked for a path code. Thats somehting else. But for example you could do a c_scan or c_trace. As long as the scan don´t hit a entity it follows the path else it is attacking

Code:
define MOVEMENT_SPEED, skill1;

action enemy_follow_path
{
	var dist = 0; // entity walk speed
	var LastPos[3];
	var Dir[3];
	
	var look_around;
	
	path_set(my, "way1"); // Change way1 to the name of your path set in WED
	
	while(1)
	{
		vec_set(look_around.x, vector(10000, 0, 0));

		vec_rotate(look_around.x, camera.pan);

		vec_add(look_around.x, camera.x);
		
		c_trace(my.x, look_around.x, IGNORE_ME | IGNORE_PASSABLE | USE_POLYGON);

		if(you == 1)
		{
			// attack code
		}
		else
		{
			path_spline(me,my.x,dist); // spline curve for smooth walking
			dist += 12*time_step; // change this to change the walk speed
			c_move(me,vector(1*time_step,0,0),nullvector,IGNORE_YOU); // this is for collision but you don´t need
			vec_diff(Dir,my.x,LastPos);
			vec_to_angle(my.pan,Dir);
			vec_set(LastPos,my.x);*/
			ent_animate(my, "run", my.MOVEMENT_SPEED, ANM_CYCLE);
			my.MOVEMENT_SPEED += 10 * time_step;
		}
		
		wait(1);
	}
}



@asd

Also zuerst lege ich soetwas wie eine Variable an. Eine Definition. Diese verweise ich auf Skill1. Theoretisch kannst du das ganze auch so sehen bzw. machen:

Code:
var MOVEMENT_SPEED;


Dannach schreibe ich die Action für die Entity welche ich dann auch dem Model in WED zuweise bzw per ent_create.

Nun werden INTERNE Variablen für die Action angelegt.

DAs wären:

Code:
var dist = 0;
var LastPos[3];
var Dir[3];


Selbstverständlich kannst du sie benennen wie du möchtest.

Dann kommt die Anweisung:

Code:
path_set(my, "way1");


was soviel heist wie lege für mich die Route/Weg mit dem Namen "way1" fest. Hast du also im WED einen Pfad kreiert und ihn way1 genannt wird die Entity sich sozusagen auf diesem Pfad nun entlang bewegen.

Nun kommt ein Befehlt den ich auch heute selber noch nicht ganz verstehe.

Code:
path_spline
soll laut Handbuch eine weiche Kurve an den jeweiligen Punnkten berechnen sodass die Bewegung gesmooth und nicht abgehackt wirkt. Allerdings bewegt dieser Befehl die Entity auch entlang des Splines. Und das ist es was ich nicht verstehe.

Jedenfalls erhöht sich mit dem Befehl

Code:
dist += 12*time_step;


die dist Variable die ja auch im path_spline drin steht, ergo bewegt sich die Figur.

Da ich gerade an einem Capture the Flag Spiel arbeite und testweise meine Figuren durch die Flagge laufen lasse, sodass sie diese aufnehmen musste ich feststellen das durch das alleinige bewegen durch path_spline keine Kollision zustande kam. also habe ich den Befehl:

Code:
c_move(me,vector(1*time_step,0,0),nullvector,IGNORE_YOU);


eingefügt wodurch dann eine Kollision zustande kam da c_move ja eine Kollisionsabfrage macht.

Code:
vec_diff


gibt die Differenz aus der Position der Entity und der Variable LastPos und speichert das in Variable Dir.

mit
Code:
vec_to_angle
dreht sich die Entity zur Position der Variable Dir.

Code:
vec_set
speichert die gegenwärtige Position der Entity in die Variable LastPos

Code:
ent_animate
ist dazu da um die Rennen Animation der Entity abzuspielen.

und
Code:
MOVEMENT_SPEED
letzendlich ist dazu da um die Animation auch voranzutreiben.

Ich verstehe den Code größtenteils. Allerdings bin ich mir bei ein paar Sachen noch unklar!