Mäuse und Käse

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

  • Mäuse und Käse

    Servus

    Folgendes problem hab ich:

    Ich hab:
    2D raum
    Objekt.Maus
    Objekt.Käse
    Objekt.Sichtradius (kreis rundes objekt)

    Hab mehrere Mäuse mit jeweils ein Sichtradius für jede Maus und mehrere Käse im raum. Jetzt soll jede Maus , das erste stuck Käse schnappen was im Sichtraidus zu sehen ist. Bei Mehreren stücken in einem Sichtradius soll die Maus das erste stück sich schnappen was rein kommt.

    Gibt es da ein Tut für Anfänger ?
  • Willkommen im Forum :)
    Arbeitest du nur mit Drag'n'Drop? Oder schon mit GML?

    In GML gibt es die Funktion instance_nearest(x,y,obj);
    Diese gibt die einzigartige ID des nächsten Käse-Objekts zurück welche du in eine Variable schreiben kannst:

    GML-Quellcode

    1. naechster_kaese = instance_nearest(x,y,obj_kaese).


    Dann kannst du den D'n'D Block step-towards :action_steplinear: verwenden und als zielkoordinaten: naechster_kaese.x bzw. naechster_kaese.y schreiben. Soll die Maus dabei anderen Objekten ausweichen, nimm step-potential.
    Um den Sichtradius zu realisieren ist ein Objekt nicht unbedingt sinnvoll. Besser wäre eine Abfrage über eine Distanz.
    Dazu den Block für test-variable verwenden und die Funktion point_distance(x,y,naechster_kaese.x,naechster_kaese.y) abfragen.
    Das alles jeweils im Step event der Maus.

    Das "schnappen" (wie auch immer das aussehen soll) kannst du dann im Kollisions-Event der Maus mit dem Käse realisieren.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)

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

  • ok hab mal geschaut

    GML-Quellcode

    1. naechster_kaese = instance_nearest(x,y,obj_kaese)
    2. ///Step Maus
    3. if distance_to_object(naechster_kaese) <= 1000
    4. {
    5. move_towards_point(naechster_kaese.x, naechster_kaese.y, 5);
    6. }
    7. else
    8. {
    9. speed = 0
    10. }
    11. ///Step Käse
    12. if instance_position(x,y,obj_maus)
    13. {
    14. instance_destroy()
    15. }
    16. }
    Alles anzeigen



    so würde ich das jetzt macnen :)

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von Knockx ()

  • Wieso schreibst du das hier und nicht ins Projekt?
    Instance_destroy nimmt leider keine Argumente, sondern zerstört die Instanz die es aufruft. Deswegen musst du schreiben:

    GML-Quellcode

    1. with(nächster_kaese) {instance_destroy()}

    Das with-statement führt einen Code für die instanz oder das Objekt in der Klammer dahinter, aus.

    EDIT: Des weiteren sollte es jeweils < statt > sein, schliesslich willst du den COde ja ausführen wenn die Distanz kleiner ist.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)