1 registered members (AndrewAMD),
1,135
guests, and 2
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
AI - in Deckung gehen klappt nicht !!
#141309
07/15/07 21:55
07/15/07 21:55
|
Joined: Jan 2006
Posts: 168 Germany, Hannover
DexLoomer
OP
Member
|
OP
Member
Joined: Jan 2006
Posts: 168
Germany, Hannover
|
Hallo Leute, ich versuche eine Gegner-Ai, nach dem Tutorial aus dem 3DGS-Magazin zu scripten, die in Deckung geht wenn sie getroffen wird. Leider fuktioniert das ganze noch nicht sauber.. Zum einen werden die Zielpunkte nicht immer richtig gesetzt, zum anderen "hängen" die meissten Gegner fest und "flackern" sobald sie ihren Zielpunkt erreichen! Hier der entsprechende Codeteil: Code:
. . . // MY.action_state=4: ENEMIE SUCHT DECKUNG while (my.action_state == 4) { if (my.hint_counter <= 360) { my.hint_counter += 36; temp.x = my.x + fsin(my.hint_counter, 300); temp.y = my.y + fcos(my.hint_counter, 300); temp.z = my.z; c_trace(my.x, temp.x, Ignore_me | Ignore_passable); result = c_trace(target.x, plBiped01_entity.x, Ignore_me | Ignore_passable); if((result != 0) && (you != plBiped01_entity)) { My.move_pos_x = target.x; My.move_pos_y = target.y; My.move_pos_z = my.z; while(1) { ent_animate(me, "Run", my.skill46, ANM_CYCLE); my.skill46 += 10 * time_step; vec_set (temp.x, my.move_pos_x); vec_sub (temp.x, my.x); vec_to_angle (my.pan, temp); my.tilt = 0; my.skill53 = 20 * time_step; my.skill54 = 0; my.skill55 = 0; result = c_move (my, my.skill53, nullvector, ignore_passable | glide); if ((result < (0.5 * my.skill53 * time_step)) || (vec_dist(my.x, My.move_pos_x) < 20)) { my.action_state = 0; break; } wait (1); } } } else { my.hint_counter = 0; } wait(1); } . . .
Weiss jemand Hilfe oder hat einen Tip? Auch würde ich mich über einen anderen Ansatz freuen, die Gegner Deckung suchen zu lassen... Dex
A8-Com-v 8.47.1
|
|
|
Re: AI - in Deckung gehen klappt nicht !!
[Re: DexLoomer]
#141310
07/16/07 08:19
07/16/07 08:19
|
Joined: Jun 2006
Posts: 2,640 Earth
Germanunkol
Expert
|
Expert
Joined: Jun 2006
Posts: 2,640
Earth
|
if ((result < (0.5 * my.skill53 * time_step)) || (vec_dist(my.x, My.move_pos_x) < 20)) um das flackern zu verhindern könntest du versuchen, hier die 0.5 größer zu machen. zum beispiel 2.0 oder so...
~"I never let school interfere with my education"~ -Mark Twain
|
|
|
Re: AI - in Deckung gehen klappt nicht !!
[Re: Germanunkol]
#141311
07/16/07 13:54
07/16/07 13:54
|
Joined: Jan 2006
Posts: 168 Germany, Hannover
DexLoomer
OP
Member
|
OP
Member
Joined: Jan 2006
Posts: 168
Germany, Hannover
|
Hi Germanunkol, leider hilft auch das erhöhen des 0.5 Wertes nicht weiter! Was ich festgestellt habe ist, dass in der zweiten Hälfte der Zeile ... || (vec_dist(my.x, My.move_pos_x) < 20)) es Probleme gibt! Auch wenn ich die ..<20 erhöhe, scheint die Distanz nie drunter zu kommen. Als ob der Gegner den Zielpunkt nicht erreicht!
A8-Com-v 8.47.1
|
|
|
Re: AI - in Deckung gehen klappt nicht !!
[Re: DexLoomer]
#141312
07/16/07 19:16
07/16/07 19:16
|
Joined: Apr 2007
Posts: 582 Germany
Poison
User
|
User
Joined: Apr 2007
Posts: 582
Germany
|
da hast du dier jetyt etwas schweres aus gesucht habs auch mal probiert es klappt aber der gegner fliegt weg falls er aufsteht in deinem fall kann ich dir sagen warum der gegner ist an dem punkt angelangt aber dabei ist er immer in bewegung und kann den punkt nicht richtig bestimmen deswegen flackert es das ist kein kollision fall es hatt etwas mit der distans vom gegner yu seinem punkt zu tun also lass dir etwas einfallen denn von fehlern wird man um 100 royent schlauer in dieser branche, ich kenn mich aus glaubs mir.
Everything is possible, just Do it!
|
|
|
Re: AI - in Deckung gehen klappt nicht !!
[Re: Poison]
#141313
07/16/07 20:38
07/16/07 20:38
|
Joined: Jan 2006
Posts: 168 Germany, Hannover
DexLoomer
OP
Member
|
OP
Member
Joined: Jan 2006
Posts: 168
Germany, Hannover
|
Yap, ist zum verückt werden!! Ich hänge nun schon seit Wochen daran, meiner AI Deckungsverhalten beizubringen und nichts klappt! Bin schon drauf und dran alles hinzuschissen... Ich hab schon sämtliche AUM´s durchsucht, weil ich gehofft hatte, dort einen Anderen CodeSchnipsel zu finden, um die Gegner ausweichen oder Deckung suchen zu lassen. Ich bin halt Grafiker und kein Programmierer
A8-Com-v 8.47.1
|
|
|
Re: AI - in Deckung gehen klappt nicht !!
[Re: DexLoomer]
#141314
07/16/07 22:22
07/16/07 22:22
|
Joined: Jan 2006
Posts: 168 Germany, Hannover
DexLoomer
OP
Member
|
OP
Member
Joined: Jan 2006
Posts: 168
Germany, Hannover
|
Wo ich gerade dabei bin... Ich versuche gerade den Gegner nur ein kleines Stück nach links oder rechts (random!) ausweichen zu lassen. Dabei soll dieser aber immer noch zum Player ausgerichtet bleiben, nur eine seitliche Walk-Anim abspielen. Im Moment bewegt der Gegner sich immer auf der selben Achse, egal von wo der Player kommt! Weiss jemand wie man so etwas geht?? Code:
while (my.action_state == 5) { var zufall; var w_counter = 0; zufall = int(random(2)); while ( w_counter <= 50 ) { w_counter += 1; if (zufall == 0) {my.y += 3;} else {my.y -= 3;} temp.x = my.x; temp.y = my.y; temp.z = my.z; ent_animate(me, "Run", my.skill46, ANM_CYCLE); my.skill46 += 10 * time_step; animation speed vec_set (temp.x, my.move_pos_x); vec_sub (temp.x, my.x); vec_to_angle (my.pan, temp); my.tilt = 0; //my.skill53 = 1 * time_step; my.skill54 = 0; my.skill55 = 0; result = c_move (my, my.skill53, nullvector, ignore_passable | glide); if (result < (0.5 * my.skill53 * time_step)) { my.action_state = 0; //Position erreicht!! break; } wait (1); } my.action_state = 0; wait(1); }
A8-Com-v 8.47.1
|
|
|
Re: AI - in Deckung gehen klappt nicht !!
[Re: DexLoomer]
#141315
07/17/07 11:47
07/17/07 11:47
|
Joined: Jan 2006
Posts: 168 Germany, Hannover
DexLoomer
OP
Member
|
OP
Member
Joined: Jan 2006
Posts: 168
Germany, Hannover
|
Habe das Problem mit dem Ausweichen nach Links/Rechts gelöst! Fehlt nur noch ein bischen finetuning! Code:
while (my.action_state == 5) { var zufall; var w_counter = 0; //check_state(); // Zustand wird überprüft //if (my.action_state != 5) {break;} zufall = int(random(2)); while ( w_counter <= 50 ) { w_counter += 1; my.speed_x = 0; // Nach Links oder rechts Strafen my.speed_y = 0; if(zufall == 0) { my.speed_y = 10; } else { my.speed_y = -10; } my.tilt = 0; if(my.speed_y != 0) { c_move(my, vector(my.speed_x * time,my.speed_y * time,0), vector(0,0,my.speed_z * time), ignore_passable + glide); } wait(1); ent_animate(my,"run",my.skill46,ANM_CYCLE); my.skill46 = (my.skill46 + 6 * time) % 100; } my.action_state = 0; //Position erreicht!!
wait(1); }
Leider hänge ich bei der Sache mit der Deckungssuche, noch immer fest ... Hat nicht irgend Jemand eine Idee???
A8-Com-v 8.47.1
|
|
|
|