|
|
c_trace question...
#165159
11/02/07 13:16
11/02/07 13:16
|
Joined: Jul 2007
Posts: 288 Germany, NRW
Martek
OP
Member
|
OP
Member
Joined: Jul 2007
Posts: 288
Germany, NRW
|
Hallo allezusammen, ich Programmiere im moment einen KI für mein Spiel. Der Ki sucht nach einem Geeigneten Versteck, wo er sich gut Verchanzen kann. Jetzt habe ich aber ein kleines Problemm. Wenn ein Versteck näher als ein anderes ist, dieses aber hinter einer Wand ist, der KI also nicht hinkommt, probiert er es trotzdem. Ich möchte aber das er dieses ignoriert. Dies ist mein Code: Code:
c_scan(my.x, my.pan, vector(120,0,my.scan_dist), ignore_me + scan_limit); if(result != 0 && you != null) { if(you.hiding == 1 && c_trace(my.x, you.x, ignore_me + ignore_you) == 0) { if(result < 75) { my.behind_hide = 1; } vec_set(temp, target.x); vec_sub(temp, my.x); vec_to_angle(my.pan, temp); my.tilt = 0; my.roll = 0; c_move(me, vector(10*time_step,0,0), nullvector, ignore_passable); ent_animate(me, "walk", my.skill51, anm_cycle); my.skill51 += 20 * time_step; my.skill51 %= 100; } } Ich hab alles gecheckt. Es liegt an der c_Trace anweisung. Aber ich weiß nicht wie ich sie modifizieren soll, damit er funktioniert. Mfg, Pingulord
3D Gamestudio A7 Extra
|
|
|
Re: c_trace question...
[Re: Martek]
#165160
11/02/07 13:21
11/02/07 13:21
|
Anonymous
Unregistered
|
Anonymous
Unregistered
|
probier mal statt if(result < 75) das if(result < 0)
|
|
|
Re: c_trace question...
[Re: ]
#165161
11/02/07 14:50
11/02/07 14:50
|
Joined: Jul 2007
Posts: 288 Germany, NRW
Martek
OP
Member
|
OP
Member
Joined: Jul 2007
Posts: 288
Germany, NRW
|
Nein das Funktioniert. Ich hatte das nur gesetzt. Damit der KI sich vor die Kiste hockt. Es geht um die c_trace anweisung. Alles andere Funktioniert.
3D Gamestudio A7 Extra
|
|
|
Re: c_trace question...
[Re: Martek]
#165162
11/02/07 15:43
11/02/07 15:43
|
Joined: Jul 2007
Posts: 959 nl
flits
User
|
User
Joined: Jul 2007
Posts: 959
nl
|
maby this works don be sure didnt test it Code:
c_scan(my.x, my.pan, vector(120,0,my.scan_dist), ignore_me + scan_limit); temp = you; if(result != 0 && you != null) { if(you.hiding == 1) {c_trace(my.x, you.x, ignore_me + ignore_you); if(temp == you) { if(result < 75) {enz.
"empty"
|
|
|
Re: c_trace question...
[Re: Martek]
#165166
11/04/07 11:21
11/04/07 11:21
|
Joined: Jul 2007
Posts: 288 Germany, NRW
Martek
OP
Member
|
OP
Member
Joined: Jul 2007
Posts: 288
Germany, NRW
|
Könnte man nicht irgendwie ne array erstellen, wo der KI jedes Oject speichert, was er bei letzen mal net erreicht hat und diese dann bei dem nächsten trace übergeht???
Aber leide habe ich keine ahnung wie man sowas machen soll...
Mfg, Pingulord
3D Gamestudio A7 Extra
|
|
|
Re: c_trace question...
[Re: Martek]
#165167
11/04/07 18:40
11/04/07 18:40
|
Joined: Jul 2007
Posts: 959 nl
flits
User
|
User
Joined: Jul 2007
Posts: 959
nl
|
i did test your code but the code did work right
some things that may can be the case you.hiding ore my.scan_dist
for saving objects you would need a hole new system
function enemy_func { var ent1; ent1 = my.skill1; {while(1) { you = ent1; c_trace(my.x, you.x, ignore_me + ignore_you); if(trace_hit ==0) { if(result < 75) { my.behind_hide = 1; } vec_set(temp, target.x); vec_sub(temp, my.x); vec_to_angle(my.pan, temp); my.tilt = 0; my.roll = 0; c_move(me, vector(10*time_step,0,0), nullvector, ignore_passable); ent_animate(me, "walk", my.skill51, anm_cycle); my.skill51 += 20 * time_step; my.skill51 %= 100; } wait(1); } }
function spawn { var ent1; var ent2; var ent3; ent1 = ent_create(player_mdl,nullvector,player_func); ent2 = ent_create(enemy_mdl,nullvector,enemy_func); you.skill1 = ent1; enz. }
function main { //level_load; spawn();
"empty"
|
|
|
|