hy
also ich hab einen kleinen gegner gemacht der ganze zeit von links nach rechts läuft und wenn er den player sieht fängt er an zu schießen.was auch gut ist.
mein problem jetzt ist das wenn er gerade schießt und ich mit dem player dann einfach durch ihn durchlaufe auf die andere seite (er schießt nach links ich renne durch ihn durch nach rechts.)
will ich das er sich auch gleich umdreht.
ich dachte ich kann das einfach mit
obj_gegner
step event
aber das funktioniert leider nicht
wäre toll wenn mir wer helfen könnte
hier noch mehr code damit ihr versteht
obj_gegner
step event
Alles anzeigen
also ich hab einen kleinen gegner gemacht der ganze zeit von links nach rechts läuft und wenn er den player sieht fängt er an zu schießen.was auch gut ist.
mein problem jetzt ist das wenn er gerade schießt und ich mit dem player dann einfach durch ihn durchlaufe auf die andere seite (er schießt nach links ich renne durch ihn durch nach rechts.)
will ich das er sich auch gleich umdreht.
ich dachte ich kann das einfach mit
obj_gegner
step event
aber das funktioniert leider nicht
wäre toll wenn mir wer helfen könnte
hier noch mehr code damit ihr versteht
obj_gegner
step event
GML-Quellcode
- if (lastgo == "right")
- {
- state = "run";
- image_xscale = 1;
- }
- if (lastgo == "left")
- {
- state = "run";
- image_xscale = -1;
- }
- if (state == "shoot")&&(lastgo == "left")&& (obj_player.x >= x) // funktioniert nicht
- {
- lastgo = "right";
- }
- if (save)//hier speichert er nur ein paar koordinaten ab
- {
- startpos_x = x;
- startpos_y = y;
- playerpos_x = x-650;
- playerpos_y = y;
- save = false;
- }
- if (now1)
- {
- spd = 2;
- go = true;
- }
- if (go) // hier spielt die musik...fürs hin und her gehn vom gegner,,,na eigentlich nur fürs nach links gehn weil fürs rechts gehn hab ich hier jetzt nicht eingefügt weils eh fast das selbe ist
- {
- now1 = false;
- if distance_to_point(playerpos_x,playerpos_y)>10
- {
- lastgo = "left";
- move_towards_point(playerpos_x,playerpos_y,spd);
- }
- if distance_to_point(playerpos_x,playerpos_y)<20
- {
- timer = true;
- move_towards_point(playerpos_x,playerpos_y,0);
- }
- }
- if (timer)//timer ist dafür da damit er wenn er den punkt erreicht hat das er dann ein paar sekunden stehn bleibt
- {
- zeit++;
- state = "idle";
- }
- if (zeit >= 180)
- {
- zeit = 0;
- now2 = true;
- go = false;
- go2 = false;
- timer = false;
- }
- if (go) // hier nur ne collision line für die sichtline des gegners
- {
- if (lastgo == "left")&& collision_line(x-300,y,x,y-1,obj_player,false,false)
- {
- see = true;
- }
- }
- if (see)
- {
- state = "shoot";
- knowit = true;
- now1 = false;
- now2 = false;
- timer = false;
- zeit = 0;
- }
- if (knowit) // also knowit bedeutet wenn er mich gesehen hat das er dann auf mich schießt
- {
- steps++;
- go = false;// geh nach links
- go2= false;// geh nach rechts
- speed = 0;
- }
- if (steps == 20)or (steps == 60)or (steps == 100) // schieß ein paar kugeln ab in abständen
- {
- instance_create(x,y,obj_terrorist_bullet);
- }
- else
- if (steps == 110)
- {
- steps = 0;
- }
- if (knowit)&&(see)&& distance_to_point(obj_player.x,obj_player.y)> 400
- // also wenn er schon auf mich schießt und ich dann aber weiter weg geh soll er aufhören und wieder den weg entlang gehn(funkt auch) nur ist die funktion distance to point nicht so gut weil egal ob ich rechts oder links vom gegner stehe löst er dann diesen code aus (obwohl es nur links ausgelöst werden sollte aber durch die funktion wird es auf beiden seiten)
- {
- knowit = false;
- steps = 0;
- state = "idle";
- see = false;
- now1 = true;
- go = true;
- }
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von acidrain833 ()