Gegner bewegt sich zurück zur Startposition

  • GM 8

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

  • Gegner bewegt sich zurück zur Startposition

    Guten Abend ( Morgen :D ) zusammen.

    Ich habe in meinem Spiel Gegner die sobald ich in der Nähe bin auf mich zufliegen. Das löse ich mit folgendem Code:

    GML-Quellcode

    1. with (obj_Enemy)
    2. {
    3. if distance_to_object(obj_Player) < 250 //radius of circle//
    4. {
    5. move_towards_point(obj_Player.x, obj_Player.y, 5);
    6. }
    7. else
    8. {
    9. speed = 0
    10. }
    11. }
    Alles anzeigen


    Soweit so gut. Der Gegner folgt mir wenn ich im Radius bin und bleib sobald ich den Radius verlasse stehen.
    Nun hab ich mir gedacht ich will das mein Gegner wieder zurückfliegt zur Startposition. Das wollte ich so lösen:

    GML-Quellcode

    1. with (obj_Enemy)
    2. {
    3. if distance_to_object(obj_Player) < 250 //radius of circle//
    4. {
    5. move_towards_point(obj_Player.x, obj_Player.y, 5);
    6. }
    7. else
    8. {
    9. move_towards_point(Start_X_Pos, Start_Y_Pos, 5);
    10. }
    11. }
    Alles anzeigen


    Habe im Create Event natürlich die Variablen Start_X_Pos und Start_Y_Pos festgelegt.

    Folgendes passiert: Gegner folgt mir -> Ich bin aus Radius -> Gegner fliegt zurück -> Und dreht sich wild auf der stelle an seiner Position.
    Eigentlich auch logisch da immer der Else Event aufgerufen wird und der Gegner immer und immer wieder an seine position fliegt ^^

    Wie kann ich das unterbinden das wenn er seine position erreicht hat aufhört sich dorthin zu bewegen?

    GML-Quellcode

    1. with (obj_Enemy)
    2. {
    3. if distance_to_object(obj_Player) < 250 //radius of circle//
    4. {
    5. move_towards_point(obj_Player.x, obj_Player.y, 5);
    6. }
    7. else
    8. {
    9. if (self.x != Start_X_Pos) && (self.y != Start_Y_Pos)
    10. {
    11. move_towards_point(Start_X_Pos, Start_Y_Pos, 5);
    12. }
    13. }
    14. }
    Alles anzeigen


    Das war mein Plan... wollte mit If not abfragen... Aber glaube habe iwie einen Fehler in der Syntax. Klappt nämlich nicht :)
    Danke schon mal für die Hilfe. Nutze Game Maker Studio
  • GML-Quellcode

    1. with (obj_Enemy)
    2. {
    3. if distance_to_object(obj_Player) < 250 //radius of circle//
    4. {
    5. move_towards_point(obj_Player.x, obj_Player.y, 5);
    6. }
    7. else
    8. {
    9. if distance_to_point(Start_X_Pos,Start_Y_Pos) > 2
    10. {
    11. move_towards_point(Start_X_Pos, Start_Y_Pos, 5);
    12. }
    13. }
    14. }
    Alles anzeigen
    Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.
  • Danke Dufnar für deine Antwort :)

    Hat nur leider auch nicht ganz geklappt. Gegner flog zurück und dann immer hin und her. Aber Dank deinem Denkanstoß und einer kleinen Änderung hat es doch geklappt.

    GML-Quellcode

    1. with (obj_Enemy)
    2. {
    3. if distance_to_object(obj_Player) < 250 //radius of circle//
    4. {
    5. move_towards_point(obj_Player.x, obj_Player.y, 5);
    6. }
    7. else
    8. {
    9. if distance_to_point(Start_X_Pos,Start_Y_Pos) > 2
    10. {
    11. move_towards_point(Start_X_Pos, Start_Y_Pos, 5);
    12. }
    13. else
    14. speed = 0
    15. }
    16. }
    Alles anzeigen


    habe noch das Else und Speed = 0 hinzugefügt und klappt hervorragend :) Danke!