Collision bei verfolgung

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

  • Collision bei verfolgung

    Hallo,

    Ich habe einen Gegner im Spiel, der ein Object verfolgen soll.Dazu habe ich im Stepevent diesen Code:

    if x > Object.x
    x -= 100;
    else if x < Object.x
    x += 100;

    else if y > Object.y
    y -= 100;
    else if y < Object.y
    y += 100;
    else if x > Object.x
    x -= 100;
    else if x < Object.x
    x += 100;

    Das spiel ist ähnlich wie Schach in Feldern aufgebaut. Deswegen bewegt sich der Gegner so. Wenn der Gegner
    in eine Wand rennt bleibt er davor stehen. Ich möchte, dass der Gegner bei collision mit einer Wand umhergeht.
    Er soll prüfen ob sich z.b. rechts neben ihn oder oben eine Wand befindet und dementsprechend in eine andere
    richtung geht. Ich hoffe ihr könnt mir weiterhelfen.
  • Hallo subteam!

    Was für eine crazy Bewegung!

    Kollisionsabfragen von oben, unten, links, rechts, diagonal kannst du ganz gut mit Platzabfragen wie place_meeting oder place_free im Step-Event machen.

    Er soll prüfen ob sich z.b. rechts neben ihn oder oben eine Wand befindet und dementsprechend in eine andere richtung geht.​


    Schau dir mal Demospiele wie Pacman an.
  • Danke Weihnachtswichtel!

    Ich habe mit place_meeting das Problem gelöst. Der Code ist vieleicht bisschen umständlich bei mir, aber
    ich habe im collision event mit der Wand diesen Code:

    if place_meeting(x,y+20,object) = false

    {
    y += 100
    }

    else

    if place_meeting(x,y-20,object) = false

    {
    y -= 100
    }

    else

    if place_meeting(x+20,y,object) = false

    {
    x += 100
    }

    else

    if place_meeting(x-20,y,object) = false

    {
    x -= 100
    }

    Es funktioniert jedenfalls :thumbsup:
  • Solange beide Objecte auf Solid gestellt sind passt das schon. Allerdings habe ich bei meinen Code einen
    kleinen Fehler festgestellt. Wenn der Gegner nach unten geht und eine Wand steht, bleibt er davor
    stehen. Von Links oder Rechts hat er keine Probleme.

    edit:

    Ich habe die Fehler nun ausgebessert. Es sieht zwar noch umständlicher aus aber
    jetzt funktioniert es in allen richtungen. Ich habe es so gemacht:

    if place_meeting(x,y-20,objeckt) = true
    if place_meeting(x-20,y,objeckt) = true
    if place_meeting(x+20,y,objeckt) = true
    if place_meeting(x,y+20,objeckt) = false
    {
    y += 100
    }

    usw.

    Danke an alle! :thumbsup:


    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von subteam ()