Fadenkreuz soll direction und geschwindigkeit vom Turm behalten

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

  • Fadenkreuz soll direction und geschwindigkeit vom Turm behalten

    Hallo liebe GM Community,

    also ich habe zwei Fadenkreuze (nennen wir sie "Maus Ziel" und "Turm Fadenkreuz") und einen Turm. Das eine "Turm Fadenkreuz" soll dem "Maus Ziel" folgen (ansich ganz leicht). Nun aber mein Problem, dass "Turm Fadenkreuz" soll auf einer imaginieren Linie liegen mit der Turm direction. Wenn der Turm sich langsam dreht soll sich das "Turm Fadenkreuz" mit der gleichen Geschwindigkeit mit nach oben oder unten bewegen (die y koordinate des "Turm Fadenkreuz" soll sich an die y koordinate der direction des Turm orientieren).

    Ein paar Fakten:
    Der Turm orientiert sich immer an "Maus Ziel".
    Nun soll sich auch noch das "Turm Fadenkreuz" an die x koordinate von "Maus Ziel" orientieren.
    Zum schluss sollte die Turm direction zu "Maus Ziel" zeigen und "Turm Fadenkreuz" sollte auf "Maus Ziel" liegen.

    Ich hoffe mir kann jemand helfen und es ist nicht zu verwirrend. Ich muss immer alles sehr ausführlich schreiben und trotzdem komm ich meistens nicht auf den Punkt. :D
    Noch eine kleine skizze zur veranschaulichung...
    Bilder
    • skizze.png

      44,53 kB, 1.007×628, 174 mal angesehen
    Für jene, die ständig das Scheitern fürchten, sind Erfolge auf ewig unerreichbar.
  • Ok das Bild hat das mir jetzt verständlich gemacht(hoffe ich). Also dafür wäre die Funktion lengthdir_x(len,dir) und lengthdir_y(len,dir) ganz hilfreich:
    Fadenkreuz koordinaten:

    GML-Quellcode

    1. ​dir = obj_turm.direction;
    2. len = 100; // Die Distanz vom Turm zum Fadenkreuz
    3. xx = obj_turm.x;
    4. yy = obj_turm.y;
    5. x = xx+lengthdir_x(len,dir);
    6. y = yy+lengthdir_y(len,dir);


    Müsstest du dir mal in der Hilfe schauen, wenn du die Funktion nicht richtig verstehst, ich weis jetzt nicht wie ich das erklären soll, das ist halt die Koordinate, die in der Richtung dir und der Distanz len angegeben wird
    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
  • Hab ich mir auch schon gedacht. Aber ich möchte ja das das "Turm Fadenkreuz" auch dem "Maus Ziel" folgt.
    Mit deinem code würde "Turm Fadenkreuz" immer in der gleichen Position verharren.
    Ich hab es so gelöst. Es ist nicht perfekt, wenn die distance sich erhöht springt nämlich das "Turm Fadenkreuz" schlagartig, verfolgt dann aber seine Ziel. Vllt. kann mir jemand das noch sauberer schreiben?

    STEP EVENT:

    GML-Quellcode

    1. var kanone_dir, maus_dis;
    2. maus_dis = point_distance(obj_kanone.x,obj_kanone.y,obj_maus_ziel.x,obj_maus_ziel.y)
    3. kanone_dir = obj_kanone.direction
    4. x = obj_kanone.x + lengthdir_x(maus_dis,kanone_dir)
    5. y = obj_kanone.y + lengthdir_y(maus_dis,kanone_dir)
    Für jene, die ständig das Scheitern fürchten, sind Erfolge auf ewig unerreichbar.
  • Versuchs mal so:
    Create

    GML-Quellcode

    1. dir = 0; //Am besten Anpassen

    Step

    GML-Quellcode

    1. var kanone_dir, maus_dis;
    2. maus_dis = point_distance(obj_kanone.x,obj_kanone.y,obj_maus_ziel.x,obj_maus_ziel.y);
    3. kanone_dir = obj_kanone.direction;
    4. dir += kanone_dir-dir / 2;
    5. x = obj_kanone.x + lengthdir_x(maus_dis,dir);
    6. y = obj_kanone.y + lengthdir_y(maus_dis,dir);

    Bin mir nicht genau sicher ob das geht. Bei mir geht immer bei so einem Code was schief xDD :D
    Edit: Ich schlauberger :D
    das musst du natürlich in die Kanone einbauen:
    Create

    GML-Quellcode

    1. dir = direction;

    Step:

    GML-Quellcode

    1. dir += direction-dir / 2;
    2. direction = dir;

    Das ganz am Ende schreiben...
    Wetten da ist ein Fehler drinne? X/
    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

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von husi012 ()

  • Hier der Code für das Fadenkreuz:

    GML-Quellcode

    1. var len;
    2. len = (turm.x-mouse_x)/cos(degtorad(turm.image_angle-180))
    3. x = turm.x+lengthdir_x(len,turm.image_angle)
    4. y = turm.y+lengthdir_y(len,turm.image_angle)
    5. if x > turm.x //Damit das Fadenkreuz nicht hinter dem Turm geht. (Falls gewünscht)
    6. {
    7. x = turm.x
    8. y = turm.y
    9. }
    Alles anzeigen

    Habs getestet, funktioniert so wie dus möchtest.
  • Ich versteh deine Skizze nicht wirklich. Kannst du einfach mal ganz konkret sagen was du erreichen willst?
    Willst du dein Turm von ein Winkel, zu nen anderen Winkel rotieren, mit einen konstanten Speed?

    Falls ja, probier das mal:
    -Dieses Script im GM rein kopieren (da du anscheind ja noch GM8.1 benutzt, wieso auch immer)
    -Diesen Code benutzen:

    GML-Quellcode

    1. var directionToTarget = point_direction(x, y, mouse_x, mouse_y);
    2. var diff = angle_difference(towerDirection, directionToTarget);
    3. var turnSpeed = 4;
    4. towerDirection += min(turnSpeed, abs(diff)) * sign(diff);
    :saint:
  • Einwandfrei 3D2Y Bandicoot, du hast genau verstanden was ich wollte. Vielen Dank.

    Zwar frag ich mich immer noch wie du auf so eine Formel kommst...aber es funktioniert, du Mathegenie. :thumbsup:

    Danke auch an die anderen beiden für eure Hilfe.

    Btw.
    Tice, tut mir leid ich weiß nicht wie ich es noch leichter(verständlicher) beschreiben sollte. ;(
    Für jene, die ständig das Scheitern fürchten, sind Erfolge auf ewig unerreichbar.