Enemy AI frage

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Enemy AI frage

    hallo

    Also ich hab versucht eine Enemy Ai zu machen jedoch habe ich probleme hier ist mein Code

    GML-Quellcode

    1. if distance_to_object(obj_player) < 450
    2. {
    3. if distance_to_object(obj_player) >50
    4. {
    5. if ((obj_player.x) + (obj_player.y)) < ((x)+(y)) hspeed = -8;
    6. }
    7. }
    8. if distance_to_object(obj_player) < 450
    9. {
    10. if distance_to_object(obj_player) > 50
    11. {
    12. if ((obj_player.x) + (obj_player.y)) > ((x)+(y)) hspeed = 8;
    13. }
    14. }
    15. if distance_to_object(obj_player) > 300 hspeed = 0;
    16. if !place_free(x-15,y)
    17. { vspeed = -10}}
    Alles anzeigen



    Jedoch weiß ich nicht wie ich es machen kann das ich die sprites zuweisen kann.also wenn er nach links geht das auch das sprite_enemy_left benutzt wird.
    Und beim Springen gibt es auch noch probleme.

    Dann wollte Ich noch machen das er der gegner schießt wenn er nahe genug ist also dachte ichs mir so:

    GML-Quellcode

    1. if distance_to_object(obj_player)<50
    2. instance_create(x,y,obj_bullet_right)



    und im obj_bullet_right noch direction =0 und hspeed=9 doch wie mach ich das er wenn er nach links schaut auch nach links schießt=???
  • du brauchst für beides "image_" gibs einfach mal im manual ein, recht kurze und einfache sache.

    mal aufgelistet:
    image_number
    image_index
    image_speed
    image_xscale
    image_yscale
    image_angle
    image_alpha
    image_blend
    image index
    image speed
    image_number

    EDIT: ach ja genau :D

    mit dem schuss bin ich mir grad nicht sicher,würde nachgucken aber meine
    daten sind beim festplatten crash hops gegangen^^

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ZaMi_ ()

  • Für dein Schuss gibt es mehrere Varianten. Die eigentlich beste ist, die Id vom Objekt abzuspeichern und dann den Speed je nach dem setzen:

    GML-Quellcode

    1. obj = instance_create(x,y,obj_bullet); //Id wird von [tt]instance_create [/tt]in die Variable [tt]obj [/tt]abgespeichert.
    2. if sprite_index == spr_player_right{ //Wenn der Spieler nach rechts schaut
    3. obj.image_angle = 0; //Es wird auf die Variable image_angle vom Objekt, das in Variable obj abgespeichert ist, zugegriffen.
    4. obj.hspeed = 9; //Hspeed von dem Objekt wird auf 9 gesetzt
    5. }
    6. else{ //Ansonsten
    7. obj.image_angle = 180;
    8. obj.hspeed = -9;
    9. }


    Auf eine bestimmte Variable von einem anderen Objekt greift man über einem . zu. Also Objekt.Variable = Wert;
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • acidrain833 schrieb:

    und wie kann ich das machen das er nur einmal in ein paar sekunden schießt???


    in dem du z.B: einen alarm hinzufügst:
    if (schusstaste && canShoot) {
    // Schießen
    canShoot =0;
    alarm[0] = room_speed;
    }
    da du am anfang sagst wenn die schusstaste gedrückt wird UND canShoot ist true dann schieße, beim schuss wird canShoot auf false gesetzt, der Alarm ist auf room_speed eingestellt heisst also eine Sekunde lang kann man nicht schießen, room_speed*2 machst kann man 2 sek. nicht schießen usw.
    Wir stehen zusammen und wir fallen zusammen